wormhole/web/contracts/Wormhole.json

27665 lines
1.3 MiB

{
"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": "_guardian_set_expirity",
"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": false,
"internalType": "uint8",
"name": "token_decimals",
"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": "bytes32",
"name": "",
"type": "bytes32"
}
],
"name": "consumedVAAs",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "guardian_set_expirity",
"outputs": [
{
"internalType": "uint32",
"name": "",
"type": "uint32"
}
],
"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": [],
"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"
},
{
"internalType": "bool",
"name": "refund_dust",
"type": "bool"
}
],
"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\":\"_guardian_set_expirity\",\"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\":false,\"internalType\":\"uint8\",\"name\":\"token_decimals\",\"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\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"consumedVAAs\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"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_expirity\",\"outputs\":[{\"internalType\":\"uint32\",\"name\":\"\",\"type\":\"uint32\"}],\"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\"},{\"internalType\":\"bool\",\"name\":\"refund_dust\",\"type\":\"bool\"}],\"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\":\"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\":\"0x843bd25fef0d2a9e47bc76387e86f0ca927625e6557fa1b262ea4a420bb59ac6\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://023ad00a5f095e8172b3cbf337262a35c4a3341299f1989c30c662a0d357236b\",\"dweb:/ipfs/QmPP1gTKNvz6hdfDQgL95xSw35vCK5MFvr4yKRcPexXuwK\"]},\"/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol\":{\"keccak256\":\"0xf7ce817c18d74da0e2b15fed25b3e7dcb79cc41f422f641bb863f9a40d62ffcf\",\"license\":\"Apache 2\",\"urls\":[\"bzz-raw://6c931162370f9d24a56743a3f769734e2d7d00c9fc7fcceec81c8765b17ab4b6\",\"dweb:/ipfs/QmQfs7Td14iy6fGF56PrGYq7VKUQtYqjhjebQ2Um1E6fUT\"]},\"@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/ERC20.sol\":{\"keccak256\":\"0xf204d98eef08edacf5a02a2af1516ea4febdb6aba7a1ae5ac8deb6e568fd3dbb\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4dea62bffbd180772a6cfe7cb90e3a045c52d6b502bdb2fdff83193da42d8d0\",\"dweb:/ipfs/QmW8qGZ5nngajmv5Aamdrpkeuq7S5YCVaR7rtcqNekKHtK\"]},\"@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": "0x60806040526002600160146101000a81548160ff021916908360ff1602179055503480156200002d57600080fd5b5060405162003b6738038062003b6783398181016040528101906200005391906200033e565b600160008190555082600260008063ffffffff1681526020019081526020016000206000820151816000019080519060200190620000939291906200014b565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff1602179055509050506000600360006101000a81548163ffffffff021916908363ffffffff16021790555080600360046101000a81548163ffffffff021916908363ffffffff16021790555081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505050506200047c565b828054828255906000526020600020908101928215620001c7579160200282015b82811115620001c65782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906200016c565b5b509050620001d69190620001da565b5090565b5b808211156200021357600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101620001db565b5090565b600081519050620002288162000448565b92915050565b600082601f8301126200024057600080fd5b8151620002576200025182620003db565b620003ad565b915081818352602084019350602081019050838560208402820111156200027d57600080fd5b60005b83811015620002b1578162000296888262000217565b84526020840193506020830192505060018101905062000280565b5050505092915050565b600060408284031215620002ce57600080fd5b620002da6040620003ad565b9050600082015167ffffffffffffffff811115620002f757600080fd5b62000305848285016200022e565b60008301525060206200031b8482850162000327565b60208301525092915050565b600081519050620003388162000462565b92915050565b6000806000606084860312156200035457600080fd5b600084015167ffffffffffffffff8111156200036f57600080fd5b6200037d86828701620002bb565b9350506020620003908682870162000217565b9250506040620003a38682870162000327565b9150509250925092565b6000604051905081810181811067ffffffffffffffff82111715620003d157600080fd5b8060405250919050565b600067ffffffffffffffff821115620003f357600080fd5b602082029050602081019050919050565b6000620004118262000418565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600063ffffffff82169050919050565b620004538162000404565b81146200045f57600080fd5b50565b6200046d8162000438565b81146200047957600080fd5b50565b6136db806200048c6000396000f3fe6080604052600436106100a05760003560e01c806370713960116100645780637071396014610205578063822d82b31461022e57806399da1d3c14610259578063a31fe40914610284578063b6694c2a146102c1578063f951975a146102fe576100e0565b80631a2be4da1461011b5780633bc0aee61461015857806342b0aefa146101815780634db47840146101be57806358d62e46146101e9576100e0565b366100e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100d79061318d565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101129061318d565b60405180910390fd5b34801561012757600080fd5b50610142600480360381019061013d91906126ce565b61033b565b60405161014f91906130ab565b60405180910390f35b34801561016457600080fd5b5061017f600480360381019061017a919061284a565b61035b565b005b34801561018d57600080fd5b506101a860048036038101906101a391906128b8565b610bcf565b6040516101b5919061334f565b60405180910390f35b3480156101ca57600080fd5b506101d3610bfd565b6040516101e0919061334f565b60405180910390f35b61020360048036038101906101fe91906127fb565b610c13565b005b34801561021157600080fd5b5061022c600480360381019061022791906126f7565b610dc0565b005b34801561023a57600080fd5b50610243611461565b604051610250919061334f565b60405180910390f35b34801561026557600080fd5b5061026e611477565b60405161027b9190612fec565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a691906127a9565b61149d565b6040516102b891906130ab565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e391906127a9565b6114bd565b6040516102f59190612fec565b60405180910390f35b34801561030a57600080fd5b50610325600480360381019061032091906128b8565b6114f0565b604051610332919061332d565b60405180910390f35b60066020528060005260406000206000915054906101000a900460ff1681565b600260005414156103a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103989061330d565b60405180910390fd5b60026000819055506000610403600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b905060018160ff161461044b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610442906131ed565b60405180910390fd5b60006104a5600185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061163b90919063ffffffff16565b90506000610501600586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b60ff169050600081604202600601905060006105718283898990500389898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506116999092919063ffffffff16565b8051906020012090506004600082815260200190815260200160002060009054906101000a900460ff16156105db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d29061316d565b60405180910390fd5b6105e36124cd565b600260008663ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820180548060200260200160405190810160405280929190818152602001828054801561069257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610648575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506000816020015163ffffffff1614806106e5575042816020015163ffffffff16115b610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b9061328d565b60405180910390fd5b836001600360048460000151518161073857fe5b040201111561077c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107739061322d565b60405180910390fd5b60005b848110156109f85760006107e6604283026006018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b90506000610847604284026007018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061175b90919063ffffffff16565b905060006108a8604285026027018d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061175b90919063ffffffff16565b90506000610909604286026047018e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b9050601b8101905085600001518460ff168151811061092457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166001888386866040516000815260200160405260405161096594939291906130c6565b6020604051602081039080840390855afa158015610987573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16146109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de9061320d565b60405180910390fd5b50505050808060010191505061077f565b506000610a55600485018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b90506060610abd60058601600587018c8c9050038c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506116999092919063ffffffff16565b905060018260ff161415610b3957600360009054906101000a900463ffffffff1663ffffffff168763ffffffff1614610b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b22906131ad565b60405180910390fd5b610b34816117b9565b610b8f565b60108260ff161415610b5357610b4e81611a37565b610b8e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b859061314d565b60405180910390fd5b5b60016004600086815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050505060016000819055505050565b60026020528060005260406000206000915090508060010160009054906101000a900463ffffffff16905081565b600360049054906101000a900463ffffffff1681565b60026000541415610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c509061330d565b60405180910390fd5b60026000819055506000341415610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c9061324d565b60405180910390fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d0157600080fd5b505af1158015610d15573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff1660001b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1660001b7f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab884600160149054906101000a900460ff166012883488604051610dab969594939291906133ca565b60405180910390a36001600081905550505050565b60026000541415610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd9061330d565b60405180910390fd5b60026000819055506000851415610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e499061324d565b60405180910390fd5b6000600160149054906101000a900460ff1690506000808873ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610eaf57600080fd5b505afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee791906128e1565b9050600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110ad578873ffffffffffffffffffffffffffffffffffffffff16639dc29fac338a6040518363ffffffff1660e01b8152600401610f76929190613022565b600060405180830381600087803b158015610f9057600080fd5b505af1158015610fa4573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff1663026b05396040518163ffffffff1660e01b815260040160206040518083038186803b158015610fee57600080fd5b505afa158015611002573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102691906128e1565b92508873ffffffffffffffffffffffffffffffffffffffff16631ba46cfd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561106e57600080fd5b505afa158015611082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a691906127d2565b91506113f2565b60008973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110e89190613007565b60206040518083038186803b15801561110057600080fd5b505afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611138919061288f565b905061116733308b8d73ffffffffffffffffffffffffffffffffffffffff16611d07909392919063ffffffff16565b60008a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111a29190613007565b60206040518083038186803b1580156111ba57600080fd5b505afa1580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f2919061288f565b90506112078282611d9090919063ffffffff16565b995060098360ff1611156112ee5760008a90506112366009850360ff16600a0a8c611dda90919063ffffffff16565b9a5086156112e8578b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336112776009880360ff16600a0a85611e2490919063ffffffff16565b6040518363ffffffff1660e01b8152600401611294929190613022565b602060405180830381600087803b1580156112ae57600080fd5b505af11580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e69190612780565b505b60099350505b67ffffffffffffffff801661139260098d73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561134457600080fd5b505afa158015611358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137c91906128e1565b0360ff16600a0a83611dda90919063ffffffff16565b11156113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca9061312d565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff1660001b935050505b3373ffffffffffffffffffffffffffffffffffffffff1660001b827f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab88886858c8e8c6040516114469695949392919061342b565b60405180910390a35050506001600081905550505050505050565b600360009054906101000a900463ffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114f86124cd565b600260008363ffffffff1663ffffffff168152602001908152602001600020604051806040016040529081600082018054806020026020016040519081016040528092919081815260200182805480156115a757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161155d575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b60006001820183511015611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d906131cd565b60405180910390fd5b60008260018501015190508091505092915050565b60006004820183511015611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b906131cd565b60405180910390fd5b60008260048501015190508091505092915050565b6060818301845110156116e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d8906131cd565b60405180910390fd5b60608215600081146116fe5760405191506020820160405261174f565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561173c578051835260208301925060208101905061171f565b50868552601f19601f8301166040525050505b50809150509392505050565b600060208201835110156117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906131cd565b60405180910390fd5b60008260208501015190508091505092915050565b60006117cf60008361163b90919063ffffffff16565b905060006117e76004846115dd90919063ffffffff16565b905060608160ff1667ffffffffffffffff8111801561180557600080fd5b506040519080825280602002602001820160405280156118345781602001602082028036833780820191505090505b50905060005b8260ff168110156118b75760006118606014830260050187611e6e90919063ffffffff16565b90508083838151811061186f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505050808060010191505061183a565b506000600360009054906101000a900463ffffffff16905083600360006101000a81548163ffffffff021916908363ffffffff1602179055506118f86124cd565b6040518060400160405280848152602001600063ffffffff1681525090508060026000600360009054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000190805190602001906119649291906124ed565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff160217905550905050600360049054906101000a900463ffffffff164201600260008463ffffffff1663ffffffff16815260200190815260200160002060010160006101000a81548163ffffffff021916908363ffffffff1602179055507fdfb80683934199683861bf00b64ecdf0984bbaf661bf27983dba382e99297a6282600360009054906101000a900463ffffffff16604051611a2792919061336a565b60405180910390a1505050505050565b6000611a4d6004836115dd90919063ffffffff16565b90506000611a656005846115dd90919063ffffffff16565b90506000611a7d603285611e6e90919063ffffffff16565b90506000611a956046866115dd90919063ffffffff16565b90506000611aad606887611edb90919063ffffffff16565b90508360ff168560ff161415611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef906132ed565b60405180910390fd5b600160149054906101000a900460ff1660ff168460ff1614611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b469061326d565b60405180910390fd5b600160149054906101000a900460ff1660ff168260ff1614611cba576000611b8160478861175b90919063ffffffff16565b905060008382604051602001611b98929190612fc0565b60405160208183030381529060405280519060200120905060006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c45576000611c3360678b6115dd90919063ffffffff16565b9050611c4183878684611f39565b9150505b8073ffffffffffffffffffffffffffffffffffffffff166340c10f1987866040518363ffffffff1660e01b8152600401611c80929190613082565b600060405180830381600087803b158015611c9a57600080fd5b505af1158015611cae573d6000803e3d6000fd5b50505050505050611cff565b6000611cd0605388611e6e90919063ffffffff16565b9050611cfd84838373ffffffffffffffffffffffffffffffffffffffff166120e29092919063ffffffff16565b505b505050505050565b611d8a846323b872dd60e01b858585604051602401611d289392919061304b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612168565b50505050565b6000611dd283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061222f565b905092915050565b6000611e1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061228a565b905092915050565b6000611e6683836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506122eb565b905092915050565b60006014820183511015611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae906131cd565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b60006020820183511015611f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1b906131cd565b60405180910390fd5b60008260208501015190508091505092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152866037826000f59250508173ffffffffffffffffffffffffffffffffffffffff1663a7a2d3fb8686866040518463ffffffff1660e01b8152600401611ffd93929190613393565b600060405180830381600087803b15801561201757600080fd5b505af115801561202b573d6000803e3d6000fd5b50505050816005600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050949350505050565b6121638363a9059cbb60e01b8484604051602401612101929190613082565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612168565b505050565b60606121ca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166123479092919063ffffffff16565b905060008151111561222a57808060200190518101906121ea9190612780565b612229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612220906132cd565b60405180910390fd5b5b505050565b6000838311158290612277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226e919061310b565b60405180910390fd5b5060008385039050809150509392505050565b600080831182906122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c8919061310b565b60405180910390fd5b5060008385816122dd57fe5b049050809150509392505050565b6000808314158290612333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232a919061310b565b60405180910390fd5b5082848161233d57fe5b0690509392505050565b6060612356848460008561235f565b90509392505050565b606061236a85612482565b6123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a0906132ad565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040516123d39190612fa9565b60006040518083038185875af1925050503d8060008114612410576040519150601f19603f3d011682016040523d82523d6000602084013e612415565b606091505b5091509150811561242a57809250505061247a565b60008151111561243d5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612471919061310b565b60405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156124c457506000801b8214155b92505050919050565b604051806040016040528060608152602001600063ffffffff1681525090565b828054828255906000526020600020908101928215612566579160200282015b828111156125655782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061250d565b5b5090506125739190612577565b5090565b5b808211156125ae57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612578565b5090565b6000813590506125c18161361b565b92915050565b6000813590506125d681613632565b92915050565b6000815190506125eb81613632565b92915050565b60008135905061260081613649565b92915050565b60008151905061261581613649565b92915050565b60008083601f84011261262d57600080fd5b8235905067ffffffffffffffff81111561264657600080fd5b60208301915083600182028301111561265e57600080fd5b9250929050565b60008135905061267481613660565b92915050565b60008151905061268981613660565b92915050565b60008135905061269e81613677565b92915050565b6000813590506126b38161368e565b92915050565b6000815190506126c88161368e565b92915050565b6000602082840312156126e057600080fd5b60006126ee848285016125b2565b91505092915050565b60008060008060008060c0878903121561271057600080fd5b600061271e89828a016125b2565b965050602061272f89828a01612665565b955050604061274089828a016125f1565b945050606061275189828a016126a4565b935050608061276289828a0161268f565b92505060a061277389828a016125c7565b9150509295509295509295565b60006020828403121561279257600080fd5b60006127a0848285016125dc565b91505092915050565b6000602082840312156127bb57600080fd5b60006127c9848285016125f1565b91505092915050565b6000602082840312156127e457600080fd5b60006127f284828501612606565b91505092915050565b60008060006060848603121561281057600080fd5b600061281e868287016125f1565b935050602061282f868287016126a4565b92505060406128408682870161268f565b9150509250925092565b6000806020838503121561285d57600080fd5b600083013567ffffffffffffffff81111561287757600080fd5b6128838582860161261b565b92509250509250929050565b6000602082840312156128a157600080fd5b60006128af8482850161267a565b91505092915050565b6000602082840312156128ca57600080fd5b60006128d88482850161268f565b91505092915050565b6000602082840312156128f357600080fd5b6000612901848285016126b9565b91505092915050565b60006129168383612931565b60208301905092915050565b61292b81613566565b82525050565b61293a816134f7565b82525050565b612949816134f7565b82525050565b600061295a8261349c565b61296481856134ca565b935061296f8361348c565b8060005b838110156129a0578151612987888261290a565b9750612992836134bd565b925050600181019050612973565b5085935050505092915050565b6129b681613509565b82525050565b6129c581613515565b82525050565b6129dc6129d782613515565b6135e1565b82525050565b60006129ed826134a7565b6129f781856134db565b9350612a078185602086016135ae565b80840191505092915050565b612a1c81613578565b82525050565b6000612a2d826134b2565b612a3781856134e6565b9350612a478185602086016135ae565b612a50816135fd565b840191505092915050565b6000612a686023836134e6565b91507f6272696467652062616c616e636520776f756c6420657863656564206d61786960008301527f6d756d00000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ace6012836134e6565b91507f696e76616c69642056414120616374696f6e00000000000000000000000000006000830152602082019050919050565b6000612b0e6018836134e6565b91507f5641412077617320616c726561647920657865637574656400000000000000006000830152602082019050919050565b6000612b4e602c836134e6565b91507f706c6561736520757365206c6f636b45544820746f207472616e73666572204560008301527f544820746f20536f6c616e6100000000000000000000000000000000000000006020830152604082019050919050565b6000612bb46039836134e6565b91507f6f6e6c79207468652063757272656e7420677561726469616e2073657420636160008301527f6e206368616e67652074686520677561726469616e20736574000000000000006020830152604082019050919050565b6000612c1a6012836134e6565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000612c5a6018836134e6565b91507f5641412076657273696f6e20696e636f6d70617469626c6500000000000000006000830152602082019050919050565b6000612c9a6015836134e6565b91507f564141207369676e617475726520696e76616c696400000000000000000000006000830152602082019050919050565b6000612cda6009836134e6565b91507f6e6f2071756f72756d00000000000000000000000000000000000000000000006000830152602082019050919050565b6000612d1a6014836134e6565b91507f616d6f756e74206d757374206e6f7420626520300000000000000000000000006000830152602082019050919050565b6000612d5a6019836134e6565b91507f7472616e73666572206d75737420626520696e636f6d696e67000000000000006000830152602082019050919050565b6000612d9a6018836134e6565b91507f677561726469616e2073657420686173206578706972656400000000000000006000830152602082019050919050565b6000612dda601d836134e6565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612e1a602a836134e6565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e806026836134e6565b91507f73616d6520636861696e207472616e736665727320617265206e6f742073757060008301527f706f7274656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ee6601f836134e6565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b60006040830160008301518482036000860152612f36828261294f565b9150506020830151612f4b6020860182612f65565b508091505092915050565b612f5f8161353f565b82525050565b612f6e81613549565b82525050565b612f7d81613549565b82525050565b612f8c81613559565b82525050565b612fa3612f9e82613559565b6135eb565b82525050565b6000612fb582846129e2565b915081905092915050565b6000612fcc8285612f92565b600182019150612fdc82846129cb565b6020820191508190509392505050565b60006020820190506130016000830184612940565b92915050565b600060208201905061301c6000830184612922565b92915050565b60006040820190506130376000830185612922565b6130446020830184612f56565b9392505050565b60006060820190506130606000830186612940565b61306d6020830185612940565b61307a6040830184612f56565b949350505050565b60006040820190506130976000830185612940565b6130a46020830184612f56565b9392505050565b60006020820190506130c060008301846129ad565b92915050565b60006080820190506130db60008301876129bc565b6130e86020830186612f83565b6130f560408301856129bc565b61310260608301846129bc565b95945050505050565b600060208201905081810360008301526131258184612a22565b905092915050565b6000602082019050818103600083015261314681612a5b565b9050919050565b6000602082019050818103600083015261316681612ac1565b9050919050565b6000602082019050818103600083015261318681612b01565b9050919050565b600060208201905081810360008301526131a681612b41565b9050919050565b600060208201905081810360008301526131c681612ba7565b9050919050565b600060208201905081810360008301526131e681612c0d565b9050919050565b6000602082019050818103600083015261320681612c4d565b9050919050565b6000602082019050818103600083015261322681612c8d565b9050919050565b6000602082019050818103600083015261324681612ccd565b9050919050565b6000602082019050818103600083015261326681612d0d565b9050919050565b6000602082019050818103600083015261328681612d4d565b9050919050565b600060208201905081810360008301526132a681612d8d565b9050919050565b600060208201905081810360008301526132c681612dcd565b9050919050565b600060208201905081810360008301526132e681612e0d565b9050919050565b6000602082019050818103600083015261330681612e73565b9050919050565b6000602082019050818103600083015261332681612ed9565b9050919050565b600060208201905081810360008301526133478184612f19565b905092915050565b60006020820190506133646000830184612f74565b92915050565b600060408201905061337f6000830185612f74565b61338c6020830184612f74565b9392505050565b60006060820190506133a86000830186612f83565b6133b560208301856129bc565b6133c26040830184612f83565b949350505050565b600060c0820190506133df6000830189612f83565b6133ec6020830188612f83565b6133f96040830187612a13565b61340660608301866129bc565b6134136080830185612f56565b61342060a0830184612f74565b979650505050505050565b600060c0820190506134406000830189612f83565b61344d6020830188612f83565b61345a6040830187612f83565b61346760608301866129bc565b6134746080830185612f56565b61348160a0830184612f74565b979650505050505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006135028261351f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006135718261358a565b9050919050565b600061358382613559565b9050919050565b60006135958261359c565b9050919050565b60006135a78261351f565b9050919050565b60005b838110156135cc5780820151818401526020810190506135b1565b838111156135db576000848401525b50505050565b6000819050919050565b60006135f68261360e565b9050919050565b6000601f19601f8301169050919050565b60008160f81b9050919050565b613624816134f7565b811461362f57600080fd5b50565b61363b81613509565b811461364657600080fd5b50565b61365281613515565b811461365d57600080fd5b50565b6136698161353f565b811461367457600080fd5b50565b61368081613549565b811461368b57600080fd5b50565b61369781613559565b81146136a257600080fd5b5056fea2646970667358221220c2c5c5efcbf02fa3995baa2a1d9f45dfa7344533b3f1c0232cdb372ed8dc4c0764736f6c634300060c0033",
"deployedBytecode": "0x6080604052600436106100a05760003560e01c806370713960116100645780637071396014610205578063822d82b31461022e57806399da1d3c14610259578063a31fe40914610284578063b6694c2a146102c1578063f951975a146102fe576100e0565b80631a2be4da1461011b5780633bc0aee61461015857806342b0aefa146101815780634db47840146101be57806358d62e46146101e9576100e0565b366100e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100d79061318d565b60405180910390fd5b6040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101129061318d565b60405180910390fd5b34801561012757600080fd5b50610142600480360381019061013d91906126ce565b61033b565b60405161014f91906130ab565b60405180910390f35b34801561016457600080fd5b5061017f600480360381019061017a919061284a565b61035b565b005b34801561018d57600080fd5b506101a860048036038101906101a391906128b8565b610bcf565b6040516101b5919061334f565b60405180910390f35b3480156101ca57600080fd5b506101d3610bfd565b6040516101e0919061334f565b60405180910390f35b61020360048036038101906101fe91906127fb565b610c13565b005b34801561021157600080fd5b5061022c600480360381019061022791906126f7565b610dc0565b005b34801561023a57600080fd5b50610243611461565b604051610250919061334f565b60405180910390f35b34801561026557600080fd5b5061026e611477565b60405161027b9190612fec565b60405180910390f35b34801561029057600080fd5b506102ab60048036038101906102a691906127a9565b61149d565b6040516102b891906130ab565b60405180910390f35b3480156102cd57600080fd5b506102e860048036038101906102e391906127a9565b6114bd565b6040516102f59190612fec565b60405180910390f35b34801561030a57600080fd5b50610325600480360381019061032091906128b8565b6114f0565b604051610332919061332d565b60405180910390f35b60066020528060005260406000206000915054906101000a900460ff1681565b600260005414156103a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016103989061330d565b60405180910390fd5b60026000819055506000610403600084848080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b905060018160ff161461044b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610442906131ed565b60405180910390fd5b60006104a5600185858080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061163b90919063ffffffff16565b90506000610501600586868080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b60ff169050600081604202600601905060006105718283898990500389898080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506116999092919063ffffffff16565b8051906020012090506004600082815260200190815260200160002060009054906101000a900460ff16156105db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105d29061316d565b60405180910390fd5b6105e36124cd565b600260008663ffffffff1663ffffffff1681526020019081526020016000206040518060400160405290816000820180548060200260200160405190810160405280929190818152602001828054801561069257602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610648575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff168152505090506000816020015163ffffffff1614806106e5575042816020015163ffffffff16115b610724576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071b9061328d565b60405180910390fd5b836001600360048460000151518161073857fe5b040201111561077c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107739061322d565b60405180910390fd5b60005b848110156109f85760006107e6604283026006018b8b8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b90506000610847604284026007018c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061175b90919063ffffffff16565b905060006108a8604285026027018d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505061175b90919063ffffffff16565b90506000610909604286026047018e8e8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b9050601b8101905085600001518460ff168151811061092457fe5b602002602001015173ffffffffffffffffffffffffffffffffffffffff166001888386866040516000815260200160405260405161096594939291906130c6565b6020604051602081039080840390855afa158015610987573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16146109e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109de9061320d565b60405180910390fd5b50505050808060010191505061077f565b506000610a55600485018a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506115dd90919063ffffffff16565b90506060610abd60058601600587018c8c9050038c8c8080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050506116999092919063ffffffff16565b905060018260ff161415610b3957600360009054906101000a900463ffffffff1663ffffffff168763ffffffff1614610b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b22906131ad565b60405180910390fd5b610b34816117b9565b610b8f565b60108260ff161415610b5357610b4e81611a37565b610b8e565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b859061314d565b60405180910390fd5b5b60016004600086815260200190815260200160002060006101000a81548160ff021916908315150217905550505050505050505060016000819055505050565b60026020528060005260406000206000915090508060010160009054906101000a900463ffffffff16905081565b600360049054906101000a900463ffffffff1681565b60026000541415610c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c509061330d565b60405180910390fd5b60026000819055506000341415610ca5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9c9061324d565b60405180910390fd5b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b158015610d0157600080fd5b505af1158015610d15573d6000803e3d6000fd5b50505050503373ffffffffffffffffffffffffffffffffffffffff1660001b73c02aaa39b223fe8d0a0e5c4f27ead9083c756cc273ffffffffffffffffffffffffffffffffffffffff1660001b7f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab884600160149054906101000a900460ff166012883488604051610dab969594939291906133ca565b60405180910390a36001600081905550505050565b60026000541415610e06576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dfd9061330d565b60405180910390fd5b60026000819055506000851415610e52576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e499061324d565b60405180910390fd5b6000600160149054906101000a900460ff1690506000808873ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015610eaf57600080fd5b505afa158015610ec3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ee791906128e1565b9050600660008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16156110ad578873ffffffffffffffffffffffffffffffffffffffff16639dc29fac338a6040518363ffffffff1660e01b8152600401610f76929190613022565b600060405180830381600087803b158015610f9057600080fd5b505af1158015610fa4573d6000803e3d6000fd5b505050508873ffffffffffffffffffffffffffffffffffffffff1663026b05396040518163ffffffff1660e01b815260040160206040518083038186803b158015610fee57600080fd5b505afa158015611002573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061102691906128e1565b92508873ffffffffffffffffffffffffffffffffffffffff16631ba46cfd6040518163ffffffff1660e01b815260040160206040518083038186803b15801561106e57600080fd5b505afa158015611082573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110a691906127d2565b91506113f2565b60008973ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016110e89190613007565b60206040518083038186803b15801561110057600080fd5b505afa158015611114573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611138919061288f565b905061116733308b8d73ffffffffffffffffffffffffffffffffffffffff16611d07909392919063ffffffff16565b60008a73ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016111a29190613007565b60206040518083038186803b1580156111ba57600080fd5b505afa1580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f2919061288f565b90506112078282611d9090919063ffffffff16565b995060098360ff1611156112ee5760008a90506112366009850360ff16600a0a8c611dda90919063ffffffff16565b9a5086156112e8578b73ffffffffffffffffffffffffffffffffffffffff1663a9059cbb336112776009880360ff16600a0a85611e2490919063ffffffff16565b6040518363ffffffff1660e01b8152600401611294929190613022565b602060405180830381600087803b1580156112ae57600080fd5b505af11580156112c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112e69190612780565b505b60099350505b67ffffffffffffffff801661139260098d73ffffffffffffffffffffffffffffffffffffffff1663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561134457600080fd5b505afa158015611358573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061137c91906128e1565b0360ff16600a0a83611dda90919063ffffffff16565b11156113d3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ca9061312d565b60405180910390fd5b8a73ffffffffffffffffffffffffffffffffffffffff1660001b935050505b3373ffffffffffffffffffffffffffffffffffffffff1660001b827f6bbd554ad75919f71fd91bf917ca6e4f41c10f03ab25751596a22253bb39aab88886858c8e8c6040516114469695949392919061342b565b60405180910390a35050506001600081905550505050505050565b600360009054906101000a900463ffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60046020528060005260406000206000915054906101000a900460ff1681565b60056020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6114f86124cd565b600260008363ffffffff1663ffffffff168152602001908152602001600020604051806040016040529081600082018054806020026020016040519081016040528092919081815260200182805480156115a757602002820191906000526020600020905b8160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161155d575b505050505081526020016001820160009054906101000a900463ffffffff1663ffffffff1663ffffffff16815250509050919050565b60006001820183511015611626576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161161d906131cd565b60405180910390fd5b60008260018501015190508091505092915050565b60006004820183511015611684576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161167b906131cd565b60405180910390fd5b60008260048501015190508091505092915050565b6060818301845110156116e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d8906131cd565b60405180910390fd5b60608215600081146116fe5760405191506020820160405261174f565b6040519150601f8416801560200281840101858101878315602002848b0101015b8183101561173c578051835260208301925060208101905061171f565b50868552601f19601f8301166040525050505b50809150509392505050565b600060208201835110156117a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179b906131cd565b60405180910390fd5b60008260208501015190508091505092915050565b60006117cf60008361163b90919063ffffffff16565b905060006117e76004846115dd90919063ffffffff16565b905060608160ff1667ffffffffffffffff8111801561180557600080fd5b506040519080825280602002602001820160405280156118345781602001602082028036833780820191505090505b50905060005b8260ff168110156118b75760006118606014830260050187611e6e90919063ffffffff16565b90508083838151811061186f57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505050808060010191505061183a565b506000600360009054906101000a900463ffffffff16905083600360006101000a81548163ffffffff021916908363ffffffff1602179055506118f86124cd565b6040518060400160405280848152602001600063ffffffff1681525090508060026000600360009054906101000a900463ffffffff1663ffffffff1663ffffffff16815260200190815260200160002060008201518160000190805190602001906119649291906124ed565b5060208201518160010160006101000a81548163ffffffff021916908363ffffffff160217905550905050600360049054906101000a900463ffffffff164201600260008463ffffffff1663ffffffff16815260200190815260200160002060010160006101000a81548163ffffffff021916908363ffffffff1602179055507fdfb80683934199683861bf00b64ecdf0984bbaf661bf27983dba382e99297a6282600360009054906101000a900463ffffffff16604051611a2792919061336a565b60405180910390a1505050505050565b6000611a4d6004836115dd90919063ffffffff16565b90506000611a656005846115dd90919063ffffffff16565b90506000611a7d603285611e6e90919063ffffffff16565b90506000611a956046866115dd90919063ffffffff16565b90506000611aad606887611edb90919063ffffffff16565b90508360ff168560ff161415611af8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aef906132ed565b60405180910390fd5b600160149054906101000a900460ff1660ff168460ff1614611b4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b469061326d565b60405180910390fd5b600160149054906101000a900460ff1660ff168260ff1614611cba576000611b8160478861175b90919063ffffffff16565b905060008382604051602001611b98929190612fc0565b60405160208183030381529060405280519060200120905060006005600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611c45576000611c3360678b6115dd90919063ffffffff16565b9050611c4183878684611f39565b9150505b8073ffffffffffffffffffffffffffffffffffffffff166340c10f1987866040518363ffffffff1660e01b8152600401611c80929190613082565b600060405180830381600087803b158015611c9a57600080fd5b505af1158015611cae573d6000803e3d6000fd5b50505050505050611cff565b6000611cd0605388611e6e90919063ffffffff16565b9050611cfd84838373ffffffffffffffffffffffffffffffffffffffff166120e29092919063ffffffff16565b505b505050505050565b611d8a846323b872dd60e01b858585604051602401611d289392919061304b565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612168565b50505050565b6000611dd283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061222f565b905092915050565b6000611e1c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061228a565b905092915050565b6000611e6683836040518060400160405280601881526020017f536166654d6174683a206d6f64756c6f206279207a65726f00000000000000008152506122eb565b905092915050565b60006014820183511015611eb7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eae906131cd565b60405180910390fd5b60006c01000000000000000000000000836020860101510490508091505092915050565b60006020820183511015611f24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1b906131cd565b60405180910390fd5b60008260208501015190508091505092915050565b600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1660601b90506040517f3d602d80600a3d3981f3363d3d373d3d3d363d7300000000000000000000000081528160148201527f5af43d82803e903d91602b57fd5bf300000000000000000000000000000000006028820152866037826000f59250508173ffffffffffffffffffffffffffffffffffffffff1663a7a2d3fb8686866040518463ffffffff1660e01b8152600401611ffd93929190613393565b600060405180830381600087803b15801561201757600080fd5b505af115801561202b573d6000803e3d6000fd5b50505050816005600088815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050949350505050565b6121638363a9059cbb60e01b8484604051602401612101929190613082565b604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050612168565b505050565b60606121ca826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166123479092919063ffffffff16565b905060008151111561222a57808060200190518101906121ea9190612780565b612229576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612220906132cd565b60405180910390fd5b5b505050565b6000838311158290612277576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161226e919061310b565b60405180910390fd5b5060008385039050809150509392505050565b600080831182906122d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c8919061310b565b60405180910390fd5b5060008385816122dd57fe5b049050809150509392505050565b6000808314158290612333576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161232a919061310b565b60405180910390fd5b5082848161233d57fe5b0690509392505050565b6060612356848460008561235f565b90509392505050565b606061236a85612482565b6123a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123a0906132ad565b60405180910390fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040516123d39190612fa9565b60006040518083038185875af1925050503d8060008114612410576040519150601f19603f3d011682016040523d82523d6000602084013e612415565b606091505b5091509150811561242a57809250505061247a565b60008151111561243d5780518082602001fd5b836040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612471919061310b565b60405180910390fd5b949350505050565b60008060007fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47060001b9050833f91508082141580156124c457506000801b8214155b92505050919050565b604051806040016040528060608152602001600063ffffffff1681525090565b828054828255906000526020600020908101928215612566579160200282015b828111156125655782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019061250d565b5b5090506125739190612577565b5090565b5b808211156125ae57600081816101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905550600101612578565b5090565b6000813590506125c18161361b565b92915050565b6000813590506125d681613632565b92915050565b6000815190506125eb81613632565b92915050565b60008135905061260081613649565b92915050565b60008151905061261581613649565b92915050565b60008083601f84011261262d57600080fd5b8235905067ffffffffffffffff81111561264657600080fd5b60208301915083600182028301111561265e57600080fd5b9250929050565b60008135905061267481613660565b92915050565b60008151905061268981613660565b92915050565b60008135905061269e81613677565b92915050565b6000813590506126b38161368e565b92915050565b6000815190506126c88161368e565b92915050565b6000602082840312156126e057600080fd5b60006126ee848285016125b2565b91505092915050565b60008060008060008060c0878903121561271057600080fd5b600061271e89828a016125b2565b965050602061272f89828a01612665565b955050604061274089828a016125f1565b945050606061275189828a016126a4565b935050608061276289828a0161268f565b92505060a061277389828a016125c7565b9150509295509295509295565b60006020828403121561279257600080fd5b60006127a0848285016125dc565b91505092915050565b6000602082840312156127bb57600080fd5b60006127c9848285016125f1565b91505092915050565b6000602082840312156127e457600080fd5b60006127f284828501612606565b91505092915050565b60008060006060848603121561281057600080fd5b600061281e868287016125f1565b935050602061282f868287016126a4565b92505060406128408682870161268f565b9150509250925092565b6000806020838503121561285d57600080fd5b600083013567ffffffffffffffff81111561287757600080fd5b6128838582860161261b565b92509250509250929050565b6000602082840312156128a157600080fd5b60006128af8482850161267a565b91505092915050565b6000602082840312156128ca57600080fd5b60006128d88482850161268f565b91505092915050565b6000602082840312156128f357600080fd5b6000612901848285016126b9565b91505092915050565b60006129168383612931565b60208301905092915050565b61292b81613566565b82525050565b61293a816134f7565b82525050565b612949816134f7565b82525050565b600061295a8261349c565b61296481856134ca565b935061296f8361348c565b8060005b838110156129a0578151612987888261290a565b9750612992836134bd565b925050600181019050612973565b5085935050505092915050565b6129b681613509565b82525050565b6129c581613515565b82525050565b6129dc6129d782613515565b6135e1565b82525050565b60006129ed826134a7565b6129f781856134db565b9350612a078185602086016135ae565b80840191505092915050565b612a1c81613578565b82525050565b6000612a2d826134b2565b612a3781856134e6565b9350612a478185602086016135ae565b612a50816135fd565b840191505092915050565b6000612a686023836134e6565b91507f6272696467652062616c616e636520776f756c6420657863656564206d61786960008301527f6d756d00000000000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ace6012836134e6565b91507f696e76616c69642056414120616374696f6e00000000000000000000000000006000830152602082019050919050565b6000612b0e6018836134e6565b91507f5641412077617320616c726561647920657865637574656400000000000000006000830152602082019050919050565b6000612b4e602c836134e6565b91507f706c6561736520757365206c6f636b45544820746f207472616e73666572204560008301527f544820746f20536f6c616e6100000000000000000000000000000000000000006020830152604082019050919050565b6000612bb46039836134e6565b91507f6f6e6c79207468652063757272656e7420677561726469616e2073657420636160008301527f6e206368616e67652074686520677561726469616e20736574000000000000006020830152604082019050919050565b6000612c1a6012836134e6565b91507f52656164206f7574206f6620626f756e647300000000000000000000000000006000830152602082019050919050565b6000612c5a6018836134e6565b91507f5641412076657273696f6e20696e636f6d70617469626c6500000000000000006000830152602082019050919050565b6000612c9a6015836134e6565b91507f564141207369676e617475726520696e76616c696400000000000000000000006000830152602082019050919050565b6000612cda6009836134e6565b91507f6e6f2071756f72756d00000000000000000000000000000000000000000000006000830152602082019050919050565b6000612d1a6014836134e6565b91507f616d6f756e74206d757374206e6f7420626520300000000000000000000000006000830152602082019050919050565b6000612d5a6019836134e6565b91507f7472616e73666572206d75737420626520696e636f6d696e67000000000000006000830152602082019050919050565b6000612d9a6018836134e6565b91507f677561726469616e2073657420686173206578706972656400000000000000006000830152602082019050919050565b6000612dda601d836134e6565b91507f416464726573733a2063616c6c20746f206e6f6e2d636f6e74726163740000006000830152602082019050919050565b6000612e1a602a836134e6565b91507f5361666545524332303a204552433230206f7065726174696f6e20646964206e60008301527f6f742073756363656564000000000000000000000000000000000000000000006020830152604082019050919050565b6000612e806026836134e6565b91507f73616d6520636861696e207472616e736665727320617265206e6f742073757060008301527f706f7274656400000000000000000000000000000000000000000000000000006020830152604082019050919050565b6000612ee6601f836134e6565b91507f5265656e7472616e637947756172643a207265656e7472616e742063616c6c006000830152602082019050919050565b60006040830160008301518482036000860152612f36828261294f565b9150506020830151612f4b6020860182612f65565b508091505092915050565b612f5f8161353f565b82525050565b612f6e81613549565b82525050565b612f7d81613549565b82525050565b612f8c81613559565b82525050565b612fa3612f9e82613559565b6135eb565b82525050565b6000612fb582846129e2565b915081905092915050565b6000612fcc8285612f92565b600182019150612fdc82846129cb565b6020820191508190509392505050565b60006020820190506130016000830184612940565b92915050565b600060208201905061301c6000830184612922565b92915050565b60006040820190506130376000830185612922565b6130446020830184612f56565b9392505050565b60006060820190506130606000830186612940565b61306d6020830185612940565b61307a6040830184612f56565b949350505050565b60006040820190506130976000830185612940565b6130a46020830184612f56565b9392505050565b60006020820190506130c060008301846129ad565b92915050565b60006080820190506130db60008301876129bc565b6130e86020830186612f83565b6130f560408301856129bc565b61310260608301846129bc565b95945050505050565b600060208201905081810360008301526131258184612a22565b905092915050565b6000602082019050818103600083015261314681612a5b565b9050919050565b6000602082019050818103600083015261316681612ac1565b9050919050565b6000602082019050818103600083015261318681612b01565b9050919050565b600060208201905081810360008301526131a681612b41565b9050919050565b600060208201905081810360008301526131c681612ba7565b9050919050565b600060208201905081810360008301526131e681612c0d565b9050919050565b6000602082019050818103600083015261320681612c4d565b9050919050565b6000602082019050818103600083015261322681612c8d565b9050919050565b6000602082019050818103600083015261324681612ccd565b9050919050565b6000602082019050818103600083015261326681612d0d565b9050919050565b6000602082019050818103600083015261328681612d4d565b9050919050565b600060208201905081810360008301526132a681612d8d565b9050919050565b600060208201905081810360008301526132c681612dcd565b9050919050565b600060208201905081810360008301526132e681612e0d565b9050919050565b6000602082019050818103600083015261330681612e73565b9050919050565b6000602082019050818103600083015261332681612ed9565b9050919050565b600060208201905081810360008301526133478184612f19565b905092915050565b60006020820190506133646000830184612f74565b92915050565b600060408201905061337f6000830185612f74565b61338c6020830184612f74565b9392505050565b60006060820190506133a86000830186612f83565b6133b560208301856129bc565b6133c26040830184612f83565b949350505050565b600060c0820190506133df6000830189612f83565b6133ec6020830188612f83565b6133f96040830187612a13565b61340660608301866129bc565b6134136080830185612f56565b61342060a0830184612f74565b979650505050505050565b600060c0820190506134406000830189612f83565b61344d6020830188612f83565b61345a6040830187612f83565b61346760608301866129bc565b6134746080830185612f56565b61348160a0830184612f74565b979650505050505050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b60006135028261351f565b9050919050565b60008115159050919050565b6000819050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600063ffffffff82169050919050565b600060ff82169050919050565b60006135718261358a565b9050919050565b600061358382613559565b9050919050565b60006135958261359c565b9050919050565b60006135a78261351f565b9050919050565b60005b838110156135cc5780820151818401526020810190506135b1565b838111156135db576000848401525b50505050565b6000819050919050565b60006135f68261360e565b9050919050565b6000601f19601f8301169050919050565b60008160f81b9050919050565b613624816134f7565b811461362f57600080fd5b50565b61363b81613509565b811461364657600080fd5b50565b61365281613515565b811461365d57600080fd5b50565b6136698161353f565b811461367457600080fd5b50565b61368081613549565b811461368b57600080fd5b50565b61369781613559565b81146136a257600080fd5b5056fea2646970667358221220c2c5c5efcbf02fa3995baa2a1d9f45dfa7344533b3f1c0232cdb372ed8dc4c0764736f6c634300060c0033",
"immutableReferences": {},
"sourceMap": "502:9541:1:-:0;;;832:1;815:18;;;;;;;;;;;;;;;;;;;;1964:360;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1628:1:9;1743:7;:22;;;;2114:20:1;2095:13;:16;2109:1;2095:16;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2208:1;2187:18;;:22;;;;;;;;;;;;;;;;;;2243;2219:21;;:46;;;;;;;;;;;;;;;;;;2297:20;2276:18;;:41;;;;;;;;;;;;;;;;;;1964:360;;;502:9541;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::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;502:9541:1:-;;;;;;;",
"deployedSourceMap": "502:9541:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9985:54;;;;;;;;;;:::i;:::-;;;;;;;;502:9541;9895:54;;;;;;;;;;:::i;:::-;;;;;;;;1911:46;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2458:1874;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1467:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1677:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9398:462;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7554:1838;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1559:32;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;747:33;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1758:44;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1857:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2330:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1911:46;;;;;;;;;;;;;;;;;;;;;;:::o;2458:1874::-;1671:1:9;2260:7;;:19;;2252:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1671:1;2390:7;:18;;;;2541:13:1::1;2557:14;2569:1;2557:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;;;:::i;:::-;2541:30;;2600:1;2589:7;:12;;;2581:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;2687:29;2719:15;2732:1;2719:3;;:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;;;;:::i;:::-;2687:47;;2745:19;2767:14;2779:1;2767:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:14;;;;:::i;:::-;2745:36;;;;2791:11;2814;2809:2;:16;2805:1;:20;2791:34;;2947:12;2972:38;2982:6;3003;2990:3;;:10;;:19;2972:3;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:38;;;;;:::i;:::-;2962:49;;;;;;2947:64;;3030:12;:18;3043:4;3030:18;;;;;;;;;;;;;;;;;;;;;3029:19;3021:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3088:31;;:::i;:::-;3122:13;:37;3136:22;3122:37;;;;;;;;;;;;;;;3088:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;3209:1;3177:12;:28;;;:33;;;:83;;;;3245:15;3214:12;:28;;;:46;;;3177:83;3169:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;3351:11;3346:1;3341;3336;3309:12;:17;;;:24;:28;;;;;;3308:34;3307:40;:55;;3299:77;;;;;;;;;;;;:::i;:::-;;;;;;;;;3392:6;3387:373;3408:11;3404:1;:15;3387:373;;;3440:11;3454:23;3474:2;3470:1;:6;3466:1;:10;3454:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;3440:37;;3491:9;3503:25;3525:2;3521:1;:6;3517:1;:10;3503:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:25;;;;:::i;:::-;3491:37;;3542:9;3554:26;3577:2;3573:1;:6;3568:2;:11;3554:3;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:26;;;;:::i;:::-;3542:38;;3594:7;3604:24;3625:2;3621:1;:6;3616:2;:11;3604:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:24;;;;:::i;:::-;3594:34;;3647:2;3642:7;;;;3699:12;:17;;;3717:5;3699:24;;;;;;;;;;;;;;;;3671:52;;:24;3681:4;3687:1;3690;3693;3671:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;:52;;;3663:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;3387:373;;;;3421:3;;;;;;;3387:373;;;;3770:12;3785:23;3806:1;3797:6;:10;3785:3;;:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;;:::i;:::-;3770:38;;3818:20;3841:48;3860:1;3851:6;:10;3886:1;3877:6;:10;3863:3;;:10;;:25;3841:3;;:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:48;;;;;:::i;:::-;3818:71;;3937:4;3927:6;:14;;;3923:332;;;3991:18;;;;;;;;;;;3965:44;;:22;:44;;;3957:114;;;;;;;;;;;;:::i;:::-;;;;;;;;;4085:29;4106:7;4085:20;:29::i;:::-;3923:332;;;4145:4;4135:6;:14;;;4131:124;;;4165:20;4177:7;4165:11;:20::i;:::-;4131:124;;;4216:28;;;;;;;;;;:::i;:::-;;;;;;;;4131:124;3923:332;4321:4;4300:12;:18;4313:4;4300:18;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;2419:1:9;;;;;;;;1628::::0;2563:7;:22;;;;2458:1874:1;;:::o;1467:51::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1677:35::-;;;;;;;;;;;;;:::o;9398:462::-;1671:1:9;2260:7;;:19;;2252:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1671:1;2390:7;:18;;;;9557:1:1::1;9544:9;:14;;9536:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;916:42;9627:25;;;9661:9;9627:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;9811:10;9803:19;;9795:28;;916:42;9772:20;;9764:29;;9720:133;9736:12;9750:8;;;;;;;;;;;9760:2;9825:9;9836;9847:5;9720:133;;;;;;;;;;;:::i;:::-;;;;;;;;1628:1:9::0;2563:7;:22;;;;9398:462:1;;;:::o;7554:1838::-;1671:1:9;2260:7;;:19;;2252:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;1671:1;2390:7;:18;;;;7778:1:1::1;7768:6;:11;;7760:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;7815:17;7835:8;;;;;;;;;;;7815:28;;7853:21;7884:14:::0;7907:5:::1;7901:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7884:40;;7939:14;:21;7954:5;7939:21;;;;;;;;;;;;;;;;;;;;;;;;;7935:1312;;;7989:5;7976:24;;;8001:10;8013:6;7976:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8061:5;8048:30;;;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8034:46;;8123:5;8110:32;;;:34;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8094:50;;7935:1312;;;8175:21;8206:5;8199:23;;;8231:4;8199:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8175:62;;8251:65;8282:10;8302:4;8309:6;8258:5;8251:30;;;;:65;;;;;;:::i;:::-;8330:20;8360:5;8353:23;;;8385:4;8353:38;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8330:61;;8605:31;8622:13;8605:12;:16;;:31;;;;:::i;:::-;8596:40;;8722:1;8711:8;:12;;;8707:339;;;8743:23;8769:6;8743:32;;8802:39;8838:1;8827:8;:12;8819:21;;8813:2;:27;8802:6;:10;;:39;;;;:::i;:::-;8793:48;;8864:11;8860:141;;;8905:5;8899:21;;;8921:10;8933:48;8978:1;8967:8;:12;8959:21;;8953:2;:27;8933:15;:19;;:48;;;;:::i;:::-;8899:83;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8860:141;9030:1;9019:12;;8707:339;;669:26;9068:74:::0;::::1;:60;9125:1;9105:5;9099:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:27;9091:36;;9085:2;:42;9068:12;:16;;:60;;;;:::i;:::-;:74;;9060:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;9229:5;9221:14;;9213:23;;9197:39;;7935:1312;;;9346:10;9338:19;;9330:28;;9315:13;9262:123;9278:12;9292:11;9305:8;9360:9;9371:6;9379:5;9262:123;;;;;;;;;;;:::i;:::-;;;;;;;;2419:1:9;;;1628::::0;2563:7;:22;;;;7554:1838:1;;;;;;:::o;1559:32::-;;;;;;;;;;;;;:::o;747:33::-;;;;;;;;;;;;;:::o;1758:44::-;;;;;;;;;;;;;;;;;;;;;;:::o;1857:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;2330:122::-;2387:21;;:::i;:::-;2427:13;:18;2441:3;2427:18;;;;;;;;;;;;;;;2420:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2330:122;;;:::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;4338:812:1:-;4405:29;4437:16;4451:1;4437:4;:13;;:16;;;;:::i;:::-;4405:48;;4463:9;4475:15;4488:1;4475:4;:12;;:15;;;;:::i;:::-;4463:27;;4501:30;4548:3;4534:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4501:51;;4567:6;4562:134;4583:3;4579:7;;:1;:7;4562:134;;;4607:12;4622:26;4645:2;4641:1;:6;4637:1;:10;4622:4;:14;;:26;;;;:::i;:::-;4607:41;;4681:4;4662:13;4676:1;4662:16;;;;;;;;;;;;;:23;;;;;;;;;;;4562:134;4588:3;;;;;;;4562:134;;;;4706:29;4738:18;;;;;;;;;;;4706:50;;4787:22;4766:18;;:43;;;;;;;;;;;;;;;;;;4820:35;;:::i;:::-;4858:29;;;;;;;;4870:13;4858:29;;;;4885:1;4858:29;;;;;4820:67;;4933:16;4897:13;:33;4911:18;;;;;;;;;;;4897:33;;;;;;;;;;;;;;;:52;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5041:21;;;;;;;;;;;5022:15;5015:47;4959:13;:37;4973:22;4959:37;;;;;;;;;;;;;;;:53;;;:103;;;;;;;;;;;;;;;;;;5078:65;5100:22;5124:18;;;;;;;;;;;5078:65;;;;;;;:::i;:::-;;;;;;;;4338:812;;;;;;:::o;5156:1447::-;5257:18;5278:15;5291:1;5278:4;:12;;:15;;;;:::i;:::-;5257:36;;5304:18;5325:15;5338:1;5325:4;:12;;:15;;;;:::i;:::-;5304:36;;5459:22;5484:23;5499:7;5484:4;:14;;:23;;;;:::i;:::-;5459:48;;5518:17;5538:16;5551:2;5538:4;:12;;:16;;;;:::i;:::-;5518:36;;5618:14;5635:19;5650:3;5635:4;:14;;:19;;;;:::i;:::-;5618:36;;5689:12;5673:28;;:12;:28;;;;5665:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;5778:8;;;;;;;;;;;5762:24;;:12;:24;;;5754:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;5846:8;;;;;;;;;;;5831:23;;:11;:23;;;5827:770;;5870:21;5894:18;5909:2;5894:4;:14;;:18;;;;:::i;:::-;5870:42;;5926:16;5972:11;5985:13;5955:44;;;;;;;;;:::i;:::-;;;;;;;;;;;;;5945:55;;;;;;5926:74;;6092:21;6116:13;:23;6130:8;6116:23;;;;;;;;;;;;;;;;;;;;;6092:47;;6182:1;6157:27;;:13;:27;;;6153:212;;;6204:20;6227:17;6240:3;6227:4;:12;;:17;;;;:::i;:::-;6204:40;;6278:72;6297:8;6307:11;6320:13;6335:14;6278:18;:72::i;:::-;6262:88;;6153:212;;6392:13;6379:32;;;6412:14;6428:6;6379:56;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5827:770;;;;;;6466:21;6490:23;6505:7;6490:4;:14;;:23;;;;:::i;:::-;6466:47;;6528:58;6563:14;6579:6;6535:13;6528:34;;;;:58;;;;;:::i;:::-;5827:770;;5156:1447;;;;;;:::o;877:203:7:-;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;3101:130::-;3159:7;3185:39;3189:1;3192;3185:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3178:46;;3101:130;;;;:::o;4436:128::-;4494:7;4520:37;4524:1;4527;4520:37;;;;;;;;;;;;;;;;;:3;:37::i;:::-;4513:44;;4436:128;;;;:::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;6609:939:1:-;6726:13;6918:19;6948:18;;;;;;;;;;;6940:27;;6918:49;;7019:4;7013:11;7051:66;7044:5;7037:81;7156:11;7149:4;7142:5;7138:16;7131:37;7206:66;7199:4;7192:5;7188:16;7181:92;7319:4;7313;7306:5;7303:1;7295:29;7286:38;;6986:348;7385:5;7372:30;;;7403:11;7416:13;7431:8;7372:68;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7498:5;7476:13;:19;7490:4;7476:19;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;7537:4;7513:14;:21;7528:5;7513:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;6609:939;;;;;;;:::o;696:175:7:-;778:86;798:5;828:23;;;853:2;857:5;805:58;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;778:19;:86::i;:::-;696:175;;;:::o;2959:751::-;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;3713:272::-;3799:7;3830:1;3826;:5;3833:12;3818:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3856:9;3872:1;3868;:5;;;;;;3856:17;;3977:1;3970:8;;;3713:272;;;;;:::o;5035:163::-;5121:7;5153:1;5148;:6;;5156:12;5140:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;5190:1;5186;:5;;;;;;5179:12;;5035:163;;;;;:::o;3770:194:8:-;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:124::-;;219:6;206:20;197:29;;231:30;255:5;231:30;:::i;:::-;191:75;;;;:::o;273:128::-;;354:6;348:13;339:22;;366:30;390:5;366:30;:::i;:::-;333:68;;;;:::o;408:130::-;;488:6;475:20;466:29;;500:33;527:5;500:33;:::i;:::-;460:78;;;;:::o;545:134::-;;629:6;623:13;614:22;;641:33;668:5;641:33;:::i;:::-;608:71;;;;:::o;700:336::-;;;814:3;807:4;799:6;795:17;791:27;781:2;;832:1;829;822:12;781:2;865:6;852:20;842:30;;892:18;884:6;881:30;878:2;;;924:1;921;914:12;878:2;958:4;950:6;946:17;934:29;;1009:3;1001:4;993:6;989:17;979:8;975:32;972:41;969:2;;;1026:1;1023;1016:12;969:2;774:262;;;;;:::o;1044:130::-;;1124:6;1111:20;1102:29;;1136:33;1163:5;1136:33;:::i;:::-;1096:78;;;;:::o;1181:134::-;;1265:6;1259:13;1250:22;;1277:33;1304:5;1277:33;:::i;:::-;1244:71;;;;:::o;1322:128::-;;1401:6;1388:20;1379:29;;1413:32;1439:5;1413:32;:::i;:::-;1373:77;;;;:::o;1457:126::-;;1535:6;1522:20;1513:29;;1547:31;1572:5;1547:31;:::i;:::-;1507:76;;;;:::o;1590:130::-;;1672:6;1666:13;1657:22;;1684:31;1709:5;1684:31;:::i;:::-;1651:69;;;;:::o;1727:241::-;;1831:2;1819:9;1810:7;1806:23;1802:32;1799:2;;;1847:1;1844;1837:12;1799:2;1882:1;1899:53;1944:7;1935:6;1924:9;1920:22;1899:53;:::i;:::-;1889:63;;1861:97;1793:175;;;;:::o;1975:857::-;;;;;;;2158:3;2146:9;2137:7;2133:23;2129:33;2126:2;;;2175:1;2172;2165:12;2126:2;2210:1;2227:53;2272:7;2263:6;2252:9;2248:22;2227:53;:::i;:::-;2217:63;;2189:97;2317:2;2335:53;2380:7;2371:6;2360:9;2356:22;2335:53;:::i;:::-;2325:63;;2296:98;2425:2;2443:53;2488:7;2479:6;2468:9;2464:22;2443:53;:::i;:::-;2433:63;;2404:98;2533:2;2551:51;2594:7;2585:6;2574:9;2570:22;2551:51;:::i;:::-;2541:61;;2512:96;2639:3;2658:52;2702:7;2693:6;2682:9;2678:22;2658:52;:::i;:::-;2648:62;;2618:98;2747:3;2766:50;2808:7;2799:6;2788:9;2784:22;2766:50;:::i;:::-;2756:60;;2726:96;2120:712;;;;;;;;:::o;2839:257::-;;2951:2;2939:9;2930:7;2926:23;2922:32;2919:2;;;2967:1;2964;2957:12;2919:2;3002:1;3019:61;3072:7;3063:6;3052:9;3048:22;3019:61;:::i;:::-;3009:71;;2981:105;2913:183;;;;:::o;3103:241::-;;3207:2;3195:9;3186:7;3182:23;3178:32;3175:2;;;3223:1;3220;3213:12;3175:2;3258:1;3275:53;3320:7;3311:6;3300:9;3296:22;3275:53;:::i;:::-;3265:63;;3237:97;3169:175;;;;:::o;3351:263::-;;3466:2;3454:9;3445:7;3441:23;3437:32;3434:2;;;3482:1;3479;3472:12;3434:2;3517:1;3534:64;3590:7;3581:6;3570:9;3566:22;3534:64;:::i;:::-;3524:74;;3496:108;3428:186;;;;:::o;3621:485::-;;;;3756:2;3744:9;3735:7;3731:23;3727:32;3724:2;;;3772:1;3769;3762:12;3724:2;3807:1;3824:53;3869:7;3860:6;3849:9;3845:22;3824:53;:::i;:::-;3814:63;;3786:97;3914:2;3932:51;3975:7;3966:6;3955:9;3951:22;3932:51;:::i;:::-;3922:61;;3893:96;4020:2;4038:52;4082:7;4073:6;4062:9;4058:22;4038:52;:::i;:::-;4028:62;;3999:97;3718:388;;;;;:::o;4113:365::-;;;4236:2;4224:9;4215:7;4211:23;4207:32;4204:2;;;4252:1;4249;4242:12;4204:2;4315:1;4304:9;4300:17;4287:31;4338:18;4330:6;4327:30;4324:2;;;4370:1;4367;4360:12;4324:2;4398:64;4454:7;4445:6;4434:9;4430:22;4398:64;:::i;:::-;4380:82;;;;4266:202;4198:280;;;;;:::o;4485:263::-;;4600:2;4588:9;4579:7;4575:23;4571:32;4568:2;;;4616:1;4613;4606:12;4568:2;4651:1;4668:64;4724:7;4715:6;4704:9;4700:22;4668:64;:::i;:::-;4658:74;;4630:108;4562:186;;;;:::o;4755:239::-;;4858:2;4846:9;4837:7;4833:23;4829:32;4826:2;;;4874:1;4871;4864:12;4826:2;4909:1;4926:52;4970:7;4961:6;4950:9;4946:22;4926:52;:::i;:::-;4916:62;;4888:96;4820:174;;;;:::o;5001:259::-;;5114:2;5102:9;5093:7;5089:23;5085:32;5082:2;;;5130:1;5127;5120:12;5082:2;5165:1;5182:62;5236:7;5227:6;5216:9;5212:22;5182:62;:::i;:::-;5172:72;;5144:106;5076:184;;;;:::o;5268:173::-;;5355:46;5397:3;5389:6;5355:46;:::i;:::-;5430:4;5425:3;5421:14;5407:28;;5348:93;;;;:::o;5449:142::-;5540:45;5579:5;5540:45;:::i;:::-;5535:3;5528:58;5522:69;;:::o;5598:103::-;5671:24;5689:5;5671:24;:::i;:::-;5666:3;5659:37;5653:48;;:::o;5708:113::-;5791:24;5809:5;5791:24;:::i;:::-;5786:3;5779:37;5773:48;;:::o;5859:670::-;;5994:54;6042:5;5994:54;:::i;:::-;6061:76;6130:6;6125:3;6061:76;:::i;:::-;6054:83;;6158:56;6208:5;6158:56;:::i;:::-;6234:7;6262:1;6247:260;6272:6;6269:1;6266:13;6247:260;;;6339:6;6333:13;6360:63;6419:3;6404:13;6360:63;:::i;:::-;6353:70;;6440:60;6493:6;6440:60;:::i;:::-;6430:70;;6304:203;6294:1;6291;6287:9;6282:14;;6247:260;;;6251:14;6520:3;6513:10;;5973:556;;;;;;;:::o;6537:104::-;6614:21;6629:5;6614:21;:::i;:::-;6609:3;6602:34;6596:45;;:::o;6648:113::-;6731:24;6749:5;6731:24;:::i;:::-;6726:3;6719:37;6713:48;;:::o;6768:152::-;6869:45;6889:24;6907:5;6889:24;:::i;:::-;6869:45;:::i;:::-;6864:3;6857:58;6851:69;;:::o;6927:356::-;;7055:38;7087:5;7055:38;:::i;:::-;7105:88;7186:6;7181:3;7105:88;:::i;:::-;7098:95;;7198:52;7243:6;7238:3;7231:4;7224:5;7220:16;7198:52;:::i;:::-;7271:6;7266:3;7262:16;7255:23;;7035:248;;;;;:::o;7290:140::-;7380:44;7418:5;7380:44;:::i;:::-;7375:3;7368:57;7362:68;;:::o;7437:347::-;;7549:39;7582:5;7549:39;:::i;:::-;7600:71;7664:6;7659:3;7600:71;:::i;:::-;7593:78;;7676:52;7721:6;7716:3;7709:4;7702:5;7698:16;7676:52;:::i;:::-;7749:29;7771:6;7749:29;:::i;:::-;7744:3;7740:39;7733:46;;7529:255;;;;;:::o;7792:372::-;;7952:67;8016:2;8011:3;7952:67;:::i;:::-;7945:74;;8052:34;8048:1;8043:3;8039:11;8032:55;8121:5;8116:2;8111:3;8107:12;8100:27;8155:2;8150:3;8146:12;8139:19;;7938:226;;;:::o;8173:318::-;;8333:67;8397:2;8392:3;8333:67;:::i;:::-;8326:74;;8433:20;8429:1;8424:3;8420:11;8413:41;8482:2;8477:3;8473:12;8466:19;;8319:172;;;:::o;8500:324::-;;8660:67;8724:2;8719:3;8660:67;:::i;:::-;8653:74;;8760:26;8756:1;8751:3;8747:11;8740:47;8815:2;8810:3;8806:12;8799:19;;8646:178;;;:::o;8833:381::-;;8993:67;9057:2;9052:3;8993:67;:::i;:::-;8986:74;;9093:34;9089:1;9084:3;9080:11;9073:55;9162:14;9157:2;9152:3;9148:12;9141:36;9205:2;9200:3;9196:12;9189:19;;8979:235;;;:::o;9223:394::-;;9383:67;9447:2;9442:3;9383:67;:::i;:::-;9376:74;;9483:34;9479:1;9474:3;9470:11;9463:55;9552:27;9547:2;9542:3;9538:12;9531:49;9608:2;9603:3;9599:12;9592:19;;9369:248;;;:::o;9626:318::-;;9786:67;9850:2;9845:3;9786:67;:::i;:::-;9779:74;;9886:20;9882:1;9877:3;9873:11;9866:41;9935:2;9930:3;9926:12;9919:19;;9772:172;;;:::o;9953:324::-;;10113:67;10177:2;10172:3;10113:67;:::i;:::-;10106:74;;10213:26;10209:1;10204:3;10200:11;10193:47;10268:2;10263:3;10259:12;10252:19;;10099:178;;;:::o;10286:321::-;;10446:67;10510:2;10505:3;10446:67;:::i;:::-;10439:74;;10546:23;10542:1;10537:3;10533:11;10526:44;10598:2;10593:3;10589:12;10582:19;;10432:175;;;:::o;10616:308::-;;10776:66;10840:1;10835:3;10776:66;:::i;:::-;10769:73;;10875:11;10871:1;10866:3;10862:11;10855:32;10915:2;10910:3;10906:12;10899:19;;10762:162;;;:::o;10933:320::-;;11093:67;11157:2;11152:3;11093:67;:::i;:::-;11086:74;;11193:22;11189:1;11184:3;11180:11;11173:43;11244:2;11239:3;11235:12;11228:19;;11079:174;;;:::o;11262:325::-;;11422:67;11486:2;11481:3;11422:67;:::i;:::-;11415:74;;11522:27;11518:1;11513:3;11509:11;11502:48;11578:2;11573:3;11569:12;11562:19;;11408:179;;;:::o;11596:324::-;;11756:67;11820:2;11815:3;11756:67;:::i;:::-;11749:74;;11856:26;11852:1;11847:3;11843:11;11836:47;11911:2;11906:3;11902:12;11895:19;;11742:178;;;:::o;11929:329::-;;12089:67;12153:2;12148:3;12089:67;:::i;:::-;12082:74;;12189:31;12185:1;12180:3;12176:11;12169:52;12249:2;12244:3;12240:12;12233:19;;12075:183;;;:::o;12267:379::-;;12427:67;12491:2;12486:3;12427:67;:::i;:::-;12420:74;;12527:34;12523:1;12518:3;12514:11;12507:55;12596:12;12591:2;12586:3;12582:12;12575:34;12637:2;12632:3;12628:12;12621:19;;12413:233;;;:::o;12655:375::-;;12815:67;12879:2;12874:3;12815:67;:::i;:::-;12808:74;;12915:34;12911:1;12906:3;12902:11;12895:55;12984:8;12979:2;12974:3;12970:12;12963:30;13021:2;13016:3;13012:12;13005:19;;12801:229;;;:::o;13039:331::-;;13199:67;13263:2;13258:3;13199:67;:::i;:::-;13192:74;;13299:33;13295:1;13290:3;13286:11;13279:54;13361:2;13356:3;13352:12;13345:19;;13185:185;;;:::o;13443:616::-;;13600:4;13595:3;13591:14;13683:4;13676:5;13672:16;13666:23;13735:3;13729:4;13725:14;13718:4;13713:3;13709:14;13702:38;13755:103;13853:4;13839:12;13755:103;:::i;:::-;13747:111;;13620:250;13954:4;13947:5;13943:16;13937:23;13966:61;14021:4;14016:3;14012:14;13998:12;13966:61;:::i;:::-;13880:153;14050:4;14043:11;;13573:486;;;;;:::o;14066:113::-;14149:24;14167:5;14149:24;:::i;:::-;14144:3;14137:37;14131:48;;:::o;14186:100::-;14257:23;14274:5;14257:23;:::i;:::-;14252:3;14245:36;14239:47;;:::o;14293:110::-;14374:23;14391:5;14374:23;:::i;:::-;14369:3;14362:36;14356:47;;:::o;14410:107::-;14489:22;14505:5;14489:22;:::i;:::-;14484:3;14477:35;14471:46;;:::o;14524:144::-;14621:41;14639:22;14655:5;14639:22;:::i;:::-;14621:41;:::i;:::-;14616:3;14609:54;14603:65;;:::o;14675:271::-;;14828:93;14917:3;14908:6;14828:93;:::i;:::-;14821:100;;14938:3;14931:10;;14809:137;;;;:::o;14953:383::-;;15105:71;15172:3;15163:6;15105:71;:::i;:::-;15198:1;15193:3;15189:11;15182:18;;15211:75;15282:3;15273:6;15211:75;:::i;:::-;15308:2;15303:3;15299:12;15292:19;;15328:3;15321:10;;15093:243;;;;;:::o;15343:222::-;;15470:2;15459:9;15455:18;15447:26;;15484:71;15552:1;15541:9;15537:17;15528:6;15484:71;:::i;:::-;15441:124;;;;:::o;15572:238::-;;15707:2;15696:9;15692:18;15684:26;;15721:79;15797:1;15786:9;15782:17;15773:6;15721:79;:::i;:::-;15678:132;;;;:::o;15817:349::-;;15980:2;15969:9;15965:18;15957:26;;15994:79;16070:1;16059:9;16055:17;16046:6;15994:79;:::i;:::-;16084:72;16152:2;16141:9;16137:18;16128:6;16084:72;:::i;:::-;15951:215;;;;;:::o;16173:444::-;;16356:2;16345:9;16341:18;16333:26;;16370:71;16438:1;16427:9;16423:17;16414:6;16370:71;:::i;:::-;16452:72;16520:2;16509:9;16505:18;16496:6;16452:72;:::i;:::-;16535;16603:2;16592:9;16588:18;16579:6;16535:72;:::i;:::-;16327:290;;;;;;:::o;16624:333::-;;16779:2;16768:9;16764:18;16756:26;;16793:71;16861:1;16850:9;16846:17;16837:6;16793:71;:::i;:::-;16875:72;16943:2;16932:9;16928:18;16919:6;16875:72;:::i;:::-;16750:207;;;;;:::o;16964:210::-;;17085:2;17074:9;17070:18;17062:26;;17099:65;17161:1;17150:9;17146:17;17137:6;17099:65;:::i;:::-;17056:118;;;;:::o;17181:548::-;;17388:3;17377:9;17373:19;17365:27;;17403:71;17471:1;17460:9;17456:17;17447:6;17403:71;:::i;:::-;17485:68;17549:2;17538:9;17534:18;17525:6;17485:68;:::i;:::-;17564:72;17632:2;17621:9;17617:18;17608:6;17564:72;:::i;:::-;17647;17715:2;17704:9;17700:18;17691:6;17647:72;:::i;:::-;17359:370;;;;;;;:::o;17736:310::-;;17883:2;17872:9;17868:18;17860:26;;17933:9;17927:4;17923:20;17919:1;17908:9;17904:17;17897:47;17958:78;18031:4;18022:6;17958:78;:::i;:::-;17950:86;;17854:192;;;;:::o;18053:416::-;;18253:2;18242:9;18238:18;18230:26;;18303:9;18297:4;18293:20;18289:1;18278:9;18274:17;18267:47;18328:131;18454:4;18328:131;:::i;:::-;18320:139;;18224:245;;;:::o;18476:416::-;;18676:2;18665:9;18661:18;18653:26;;18726:9;18720:4;18716:20;18712:1;18701:9;18697:17;18690:47;18751:131;18877:4;18751:131;:::i;:::-;18743:139;;18647:245;;;:::o;18899:416::-;;19099:2;19088:9;19084:18;19076:26;;19149:9;19143:4;19139:20;19135:1;19124:9;19120:17;19113:47;19174:131;19300:4;19174:131;:::i;:::-;19166:139;;19070:245;;;:::o;19322:416::-;;19522:2;19511:9;19507:18;19499:26;;19572:9;19566:4;19562:20;19558:1;19547:9;19543:17;19536:47;19597:131;19723:4;19597:131;:::i;:::-;19589:139;;19493:245;;;:::o;19745:416::-;;19945:2;19934:9;19930:18;19922:26;;19995:9;19989:4;19985:20;19981:1;19970:9;19966:17;19959:47;20020:131;20146:4;20020:131;:::i;:::-;20012:139;;19916:245;;;:::o;20168:416::-;;20368:2;20357:9;20353:18;20345:26;;20418:9;20412:4;20408:20;20404:1;20393:9;20389:17;20382:47;20443:131;20569:4;20443:131;:::i;:::-;20435:139;;20339:245;;;:::o;20591:416::-;;20791:2;20780:9;20776:18;20768:26;;20841:9;20835:4;20831:20;20827:1;20816:9;20812:17;20805:47;20866:131;20992:4;20866:131;:::i;:::-;20858:139;;20762:245;;;:::o;21014:416::-;;21214:2;21203:9;21199:18;21191:26;;21264:9;21258:4;21254:20;21250:1;21239:9;21235:17;21228:47;21289:131;21415:4;21289:131;:::i;:::-;21281:139;;21185:245;;;:::o;21437:416::-;;21637:2;21626:9;21622:18;21614:26;;21687:9;21681:4;21677:20;21673:1;21662:9;21658:17;21651:47;21712:131;21838:4;21712:131;:::i;:::-;21704:139;;21608:245;;;:::o;21860:416::-;;22060:2;22049:9;22045:18;22037:26;;22110:9;22104:4;22100:20;22096:1;22085:9;22081:17;22074:47;22135:131;22261:4;22135:131;:::i;:::-;22127:139;;22031:245;;;:::o;22283:416::-;;22483:2;22472:9;22468:18;22460:26;;22533:9;22527:4;22523:20;22519:1;22508:9;22504:17;22497:47;22558:131;22684:4;22558:131;:::i;:::-;22550:139;;22454:245;;;:::o;22706:416::-;;22906:2;22895:9;22891:18;22883:26;;22956:9;22950:4;22946:20;22942:1;22931:9;22927:17;22920:47;22981:131;23107:4;22981:131;:::i;:::-;22973:139;;22877:245;;;:::o;23129:416::-;;23329:2;23318:9;23314:18;23306:26;;23379:9;23373:4;23369:20;23365:1;23354:9;23350:17;23343:47;23404:131;23530:4;23404:131;:::i;:::-;23396:139;;23300:245;;;:::o;23552:416::-;;23752:2;23741:9;23737:18;23729:26;;23802:9;23796:4;23792:20;23788:1;23777:9;23773:17;23766:47;23827:131;23953:4;23827:131;:::i;:::-;23819:139;;23723:245;;;:::o;23975:416::-;;24175:2;24164:9;24160:18;24152:26;;24225:9;24219:4;24215:20;24211:1;24200:9;24196:17;24189:47;24250:131;24376:4;24250:131;:::i;:::-;24242:139;;24146:245;;;:::o;24398:416::-;;24598:2;24587:9;24583:18;24575:26;;24648:9;24642:4;24638:20;24634:1;24623:9;24619:17;24612:47;24673:131;24799:4;24673:131;:::i;:::-;24665:139;;24569:245;;;:::o;24821:382::-;;25004:2;24993:9;24989:18;24981:26;;25054:9;25048:4;25044:20;25040:1;25029:9;25025:17;25018:47;25079:114;25188:4;25179:6;25079:114;:::i;:::-;25071:122;;24975:228;;;;:::o;25210:218::-;;25335:2;25324:9;25320:18;25312:26;;25349:69;25415:1;25404:9;25400:17;25391:6;25349:69;:::i;:::-;25306:122;;;;:::o;25435:325::-;;25586:2;25575:9;25571:18;25563:26;;25600:69;25666:1;25655:9;25651:17;25642:6;25600:69;:::i;:::-;25680:70;25746:2;25735:9;25731:18;25722:6;25680:70;:::i;:::-;25557:203;;;;;:::o;25767:428::-;;25942:2;25931:9;25927:18;25919:26;;25956:67;26020:1;26009:9;26005:17;25996:6;25956:67;:::i;:::-;26034:72;26102:2;26091:9;26087:18;26078:6;26034:72;:::i;:::-;26117:68;26181:2;26170:9;26166:18;26157:6;26117:68;:::i;:::-;25913:282;;;;;;:::o;26202:774::-;;26466:3;26455:9;26451:19;26443:27;;26481:67;26545:1;26534:9;26530:17;26521:6;26481:67;:::i;:::-;26559:68;26623:2;26612:9;26608:18;26599:6;26559:68;:::i;:::-;26638:79;26713:2;26702:9;26698:18;26689:6;26638:79;:::i;:::-;26728:72;26796:2;26785:9;26781:18;26772:6;26728:72;:::i;:::-;26811:73;26879:3;26868:9;26864:19;26855:6;26811:73;:::i;:::-;26895:71;26961:3;26950:9;26946:19;26937:6;26895:71;:::i;:::-;26437:539;;;;;;;;;:::o;26983:752::-;;27236:3;27225:9;27221:19;27213:27;;27251:67;27315:1;27304:9;27300:17;27291:6;27251:67;:::i;:::-;27329:68;27393:2;27382:9;27378:18;27369:6;27329:68;:::i;:::-;27408;27472:2;27461:9;27457:18;27448:6;27408:68;:::i;:::-;27487:72;27555:2;27544:9;27540:18;27531:6;27487:72;:::i;:::-;27570:73;27638:3;27627:9;27623:19;27614:6;27570:73;:::i;:::-;27654:71;27720:3;27709:9;27705:19;27696:6;27654:71;:::i;:::-;27207:528;;;;;;;;;:::o;27742:151::-;;27828:3;27820:11;;27866:4;27861:3;27857:14;27849:22;;27814:79;;;:::o;27900:137::-;;28009:5;28003:12;27993:22;;27974:63;;;:::o;28044:121::-;;28137:5;28131:12;28121:22;;28102:63;;;:::o;28172:122::-;;28266:5;28260:12;28250:22;;28231:63;;;:::o;28301:108::-;;28399:4;28394:3;28390:14;28382:22;;28376:33;;;:::o;28417:168::-;;28537:6;28532:3;28525:19;28574:4;28569:3;28565:14;28550:29;;28518:67;;;;:::o;28594:144::-;;28729:3;28714:18;;28707:31;;;;:::o;28747:163::-;;28862:6;28857:3;28850:19;28899:4;28894:3;28890:14;28875:29;;28843:67;;;;:::o;28918:91::-;;28980:24;28998:5;28980:24;:::i;:::-;28969:35;;28963:46;;;:::o;29016:85::-;;29089:5;29082:13;29075:21;29064:32;;29058:43;;;:::o;29108:72::-;;29170:5;29159:16;;29153:27;;;:::o;29187:121::-;;29260:42;29253:5;29249:54;29238:65;;29232:76;;;:::o;29315:72::-;;29377:5;29366:16;;29360:27;;;:::o;29394:88::-;;29466:10;29459:5;29455:22;29444:33;;29438:44;;;:::o;29489:81::-;;29560:4;29553:5;29549:16;29538:27;;29532:38;;;:::o;29577:129::-;;29664:37;29695:5;29664:37;:::i;:::-;29651:50;;29645:61;;;:::o;29713:113::-;;29799:22;29815:5;29799:22;:::i;:::-;29786:35;;29780:46;;;:::o;29833:121::-;;29912:37;29943:5;29912:37;:::i;:::-;29899:50;;29893:61;;;:::o;29961:108::-;;30040:24;30058:5;30040:24;:::i;:::-;30027:37;;30021:48;;;:::o;30077:268::-;30142:1;30149:101;30163:6;30160:1;30157:13;30149:101;;;30239:1;30234:3;30230:11;30224:18;30220:1;30215:3;30211:11;30204:39;30185:2;30182:1;30178:10;30173:15;;30149:101;;;30265:6;30262:1;30259:13;30256:2;;;30330:1;30321:6;30316:3;30312:16;30305:27;30256:2;30126:219;;;;:::o;30353:74::-;;30417:5;30406:16;;30400:27;;;:::o;30434:88::-;;30496:21;30511:5;30496:21;:::i;:::-;30485:32;;30479:43;;;:::o;30529:97::-;;30617:2;30613:7;30608:2;30601:5;30597:14;30593:28;30583:38;;30577:49;;;:::o;30634:96::-;;30714:5;30709:3;30705:15;30683:37;;30677:53;;;:::o;30738:117::-;30807:24;30825:5;30807:24;:::i;:::-;30800:5;30797:35;30787:2;;30846:1;30843;30836:12;30787:2;30781:74;:::o;30862:111::-;30928:21;30943:5;30928:21;:::i;:::-;30921:5;30918:32;30908:2;;30964:1;30961;30954:12;30908:2;30902:71;:::o;30980:117::-;31049:24;31067:5;31049:24;:::i;:::-;31042:5;31039:35;31029:2;;31088:1;31085;31078:12;31029:2;31023:74;:::o;31104:117::-;31173:24;31191:5;31173:24;:::i;:::-;31166:5;31163:35;31153:2;;31212:1;31209;31202:12;31153:2;31147:74;:::o;31228:115::-;31296:23;31313:5;31296:23;:::i;:::-;31289:5;31286:34;31276:2;;31334:1;31331;31324:12;31276:2;31270:73;:::o;31350:113::-;31417:22;31433:5;31417:22;:::i;:::-;31410:5;31407:33;31397:2;;31454:1;31451;31444:12;31397:2;31391: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/ERC20.sol\";\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 uint64 constant MAX_UINT64 = 18_446_744_073_709_551_615;\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 uint8 token_decimals,\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 a guardian set stays active after it has been replaced\n uint32 public guardian_set_expirity;\n\n // Mapping of already consumedVAAs\n mapping(bytes32 => bool) public 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 _guardian_set_expirity) public {\n guardian_sets[0] = initial_guardian_set;\n // Explicitly set for doc purposes\n guardian_set_index = 0;\n guardian_set_expirity = _guardian_set_expirity;\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 // 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 / 4) * 3) + 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) + guardian_set_expirity;\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(104);\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 uint8 asset_decimals = data.toUint8(103);\n wrapped_asset = deployWrappedAsset(asset_id, token_chain, token_address, asset_decimals);\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, uint8 decimals) 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 := create2(0, clone, 0x37, seed)\n }\n\n // Call initializer\n WrappedAsset(asset).initialize(token_chain, token_address, decimals);\n\n // Store address\n wrappedAssets[seed] = asset;\n isWrappedAsset[asset] = true;\n }\n\n function lockAssets(\n address asset,\n uint256 amount,\n bytes32 recipient,\n uint8 target_chain,\n uint32 nonce,\n bool refund_dust\n ) public nonReentrant {\n require(amount != 0, \"amount must not be 0\");\n\n uint8 asset_chain = CHAIN_ID;\n bytes32 asset_address;\n uint8 decimals = ERC20(asset).decimals();\n\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\n // Decimal adjust amount - we keep the dust\n if (decimals > 9) {\n uint256 original_amount = amount;\n amount = amount.div(10 ** uint256(decimals - 9));\n\n if (refund_dust) {\n ERC20(asset).transfer(msg.sender, original_amount.mod(10 ** uint256(decimals - 9)));\n }\n\n decimals = 9;\n }\n\n require(balanceAfter.div(10 ** uint256(ERC20(asset).decimals() - 9)) <= MAX_UINT64, \"bridge balance would exceed maximum\");\n\n asset_address = bytes32(uint256(asset));\n }\n\n emit LogTokensLocked(target_chain, asset_chain, decimals, 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, 18, bytes32(uint256(WETHAddress)), bytes32(uint256(msg.sender)), recipient, msg.value, nonce);\n }\n\n fallback() external payable {revert(\"please use lockETH to transfer ETH to Solana\");}\n\n receive() external payable {revert(\"please use lockETH to transfer ETH to Solana\");}\n}\n\n\ninterface WETH is IERC20 {\n function deposit() external payable;\n\n function 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": [
1265
],
"Wormhole": [
1254
]
},
"id": 1266,
"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/ERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
"id": 337,
"nodeType": "ImportDirective",
"scope": 1266,
"sourceUnit": 2538,
"src": "162:55:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"id": 338,
"nodeType": "ImportDirective",
"scope": 1266,
"sourceUnit": 2616,
"src": "218:56:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
"id": 339,
"nodeType": "ImportDirective",
"scope": 1266,
"sourceUnit": 2829,
"src": "275:59:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
"file": "@openzeppelin/contracts/math/SafeMath.sol",
"id": 340,
"nodeType": "ImportDirective",
"scope": 1266,
"sourceUnit": 2031,
"src": "335:51:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
"file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
"id": 341,
"nodeType": "ImportDirective",
"scope": 1266,
"sourceUnit": 3073,
"src": "387:59:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/BytesLib.sol",
"file": "./BytesLib.sol",
"id": 342,
"nodeType": "ImportDirective",
"scope": 1266,
"sourceUnit": 334,
"src": "447:24:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol",
"file": "./WrappedAsset.sol",
"id": 343,
"nodeType": "ImportDirective",
"scope": 1266,
"sourceUnit": 1812,
"src": "472:28:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 344,
"name": "ReentrancyGuard",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3072,
"src": "523:15:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ReentrancyGuard_$3072",
"typeString": "contract ReentrancyGuard"
}
},
"id": 345,
"nodeType": "InheritanceSpecifier",
"src": "523:15:1"
}
],
"contractDependencies": [
3072
],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 1254,
"linearizedBaseContracts": [
1254,
3072
],
"name": "Wormhole",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 348,
"libraryName": {
"contractScope": null,
"id": 346,
"name": "SafeERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2828,
"src": "551:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeERC20_$2828",
"typeString": "library SafeERC20"
}
},
"nodeType": "UsingForDirective",
"src": "545:27:1",
"typeName": {
"contractScope": null,
"id": 347,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2615,
"src": "565:6:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2615",
"typeString": "contract IERC20"
}
}
},
{
"id": 351,
"libraryName": {
"contractScope": null,
"id": 349,
"name": "BytesLib",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 333,
"src": "583:8:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_BytesLib_$333",
"typeString": "library BytesLib"
}
},
"nodeType": "UsingForDirective",
"src": "577:25:1",
"typeName": {
"id": 350,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "596:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
}
},
{
"id": 354,
"libraryName": {
"contractScope": null,
"id": 352,
"name": "SafeMath",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2030,
"src": "613:8:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeMath_$2030",
"typeString": "library SafeMath"
}
},
"nodeType": "UsingForDirective",
"src": "607:27:1",
"typeName": {
"id": 353,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "626:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"constant": true,
"id": 357,
"mutability": "constant",
"name": "MAX_UINT64",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "640:55:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
},
"typeName": {
"id": 355,
"name": "uint64",
"nodeType": "ElementaryTypeName",
"src": "640:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
"value": {
"argumentTypes": null,
"hexValue": "31385f3434365f3734345f3037335f3730395f3535315f363135",
"id": 356,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "669:26:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_18446744073709551615_by_1",
"typeString": "int_const 18446744073709551615"
},
"value": "18_446_744_073_709_551_615"
},
"visibility": "internal"
},
{
"constant": false,
"functionSelector": "99da1d3c",
"id": 359,
"mutability": "mutable",
"name": "wrappedAssetMaster",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "747:33:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 358,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "747:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 362,
"mutability": "mutable",
"name": "CHAIN_ID",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "815:18:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 360,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "815:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": {
"argumentTypes": null,
"hexValue": "32",
"id": 361,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "832:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"visibility": "internal"
},
{
"constant": true,
"id": 365,
"mutability": "constant",
"name": "WETHAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "885:73:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 363,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "885:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": {
"argumentTypes": null,
"hexValue": "307843303261614133396232323346453844304130653543344632376541443930383343373536436332",
"id": 364,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "916:42:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
"value": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
},
"visibility": "internal"
},
{
"canonicalName": "Wormhole.GuardianSet",
"id": 371,
"members": [
{
"constant": false,
"id": 368,
"mutability": "mutable",
"name": "keys",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 371,
"src": "994:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 366,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "994:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 367,
"length": null,
"nodeType": "ArrayTypeName",
"src": "994:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 370,
"mutability": "mutable",
"name": "expiration_time",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 371,
"src": "1018:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 369,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1018:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "GuardianSet",
"nodeType": "StructDefinition",
"scope": 1254,
"src": "965:82:1",
"visibility": "public"
},
{
"anonymous": false,
"documentation": null,
"id": 377,
"name": "LogGuardianSetChanged",
"nodeType": "EventDefinition",
"parameters": {
"id": 376,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 373,
"indexed": false,
"mutability": "mutable",
"name": "oldGuardianIndex",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 377,
"src": "1090:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 372,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1090:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 375,
"indexed": false,
"mutability": "mutable",
"name": "newGuardianIndex",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 377,
"src": "1123:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 374,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1123:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1080:72:1"
},
"src": "1053:100:1"
},
{
"anonymous": false,
"documentation": null,
"id": 395,
"name": "LogTokensLocked",
"nodeType": "EventDefinition",
"parameters": {
"id": 394,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 379,
"indexed": false,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1190:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 378,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1190:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 381,
"indexed": false,
"mutability": "mutable",
"name": "token_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1218:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 380,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1218:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 383,
"indexed": false,
"mutability": "mutable",
"name": "token_decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1245:20:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 382,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1245:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 385,
"indexed": true,
"mutability": "mutable",
"name": "token",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1275:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 384,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1275:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 387,
"indexed": true,
"mutability": "mutable",
"name": "sender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1306:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 386,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1306:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 389,
"indexed": false,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1338:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 388,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1338:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 391,
"indexed": false,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1365:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 390,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1365:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 393,
"indexed": false,
"mutability": "mutable",
"name": "nonce",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1389:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 392,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1389:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1180:227:1"
},
"src": "1159:249:1"
},
{
"constant": false,
"functionSelector": "42b0aefa",
"id": 399,
"mutability": "mutable",
"name": "guardian_sets",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "1467:51:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet)"
},
"typeName": {
"id": 398,
"keyType": {
"id": 396,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1475:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Mapping",
"src": "1467:30:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet)"
},
"valueType": {
"contractScope": null,
"id": 397,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 371,
"src": "1485:11:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "822d82b3",
"id": 401,
"mutability": "mutable",
"name": "guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "1559:32:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 400,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1559:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "4db47840",
"id": 403,
"mutability": "mutable",
"name": "guardian_set_expirity",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "1677:35:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 402,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1677:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "a31fe409",
"id": 407,
"mutability": "mutable",
"name": "consumedVAAs",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "1758:44:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"typeName": {
"id": 406,
"keyType": {
"id": 404,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1766:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "1758:24:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"valueType": {
"id": 405,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1777:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "b6694c2a",
"id": 411,
"mutability": "mutable",
"name": "wrappedAssets",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "1857:48:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
},
"typeName": {
"id": 410,
"keyType": {
"id": 408,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1865:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "1857:27:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
},
"valueType": {
"id": 409,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1876:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "1a2be4da",
"id": 415,
"mutability": "mutable",
"name": "isWrappedAsset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "1911:46:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 414,
"keyType": {
"id": 412,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1919:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1911:24:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 413,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1930:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 442,
"nodeType": "Block",
"src": "2085:239:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 428,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 424,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 399,
"src": "2095:13:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 426,
"indexExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 425,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2109: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": "2095:16:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 427,
"name": "initial_guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 417,
"src": "2114:20:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"src": "2095:39:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"id": 429,
"nodeType": "ExpressionStatement",
"src": "2095:39:1"
},
{
"expression": {
"argumentTypes": null,
"id": 432,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 430,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 401,
"src": "2187:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 431,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2208:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2187:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 433,
"nodeType": "ExpressionStatement",
"src": "2187:22:1"
},
{
"expression": {
"argumentTypes": null,
"id": 436,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 434,
"name": "guardian_set_expirity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 403,
"src": "2219:21:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 435,
"name": "_guardian_set_expirity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 421,
"src": "2243:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "2219:46:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 437,
"nodeType": "ExpressionStatement",
"src": "2219:46:1"
},
{
"expression": {
"argumentTypes": null,
"id": 440,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 438,
"name": "wrappedAssetMaster",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 359,
"src": "2276:18:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 439,
"name": "wrapped_asset_master",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 419,
"src": "2297:20:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2276:41:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 441,
"nodeType": "ExpressionStatement",
"src": "2276:41:1"
}
]
},
"documentation": null,
"id": 443,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 422,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 417,
"mutability": "mutable",
"name": "initial_guardian_set",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 443,
"src": "1976:39:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 416,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 371,
"src": "1976:11:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 419,
"mutability": "mutable",
"name": "wrapped_asset_master",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 443,
"src": "2017:28:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 418,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2017:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 421,
"mutability": "mutable",
"name": "_guardian_set_expirity",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 443,
"src": "2047:29:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 420,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "2047:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1975:102:1"
},
"returnParameters": {
"id": 423,
"nodeType": "ParameterList",
"parameters": [],
"src": "2085:0:1"
},
"scope": 1254,
"src": "1964:360:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 454,
"nodeType": "Block",
"src": "2410:42:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 450,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 399,
"src": "2427:13:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 452,
"indexExpression": {
"argumentTypes": null,
"id": 451,
"name": "idx",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 445,
"src": "2441:3:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2427:18:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"functionReturnParameters": 449,
"id": 453,
"nodeType": "Return",
"src": "2420:25:1"
}
]
},
"documentation": null,
"functionSelector": "f951975a",
"id": 455,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getGuardianSet",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 446,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 445,
"mutability": "mutable",
"name": "idx",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 455,
"src": "2354:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 444,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "2354:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2353:12:1"
},
"returnParameters": {
"id": 449,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 448,
"mutability": "mutable",
"name": "gs",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 455,
"src": "2387:21:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 447,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 371,
"src": "2387:11:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2386:23:1"
},
"scope": 1254,
"src": "2330:122:1",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 692,
"nodeType": "Block",
"src": "2531:1801:1",
"statements": [
{
"assignments": [
463
],
"declarations": [
{
"constant": false,
"id": 463,
"mutability": "mutable",
"name": "version",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "2541:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 462,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2541:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 468,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 466,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2569: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": 464,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "2557:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 465,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "2557: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": 467,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2557:14:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2541:30:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 472,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 470,
"name": "version",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 463,
"src": "2589:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 471,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2600:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2589:12:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "5641412076657273696f6e20696e636f6d70617469626c65",
"id": 473,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2603: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": 469,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2581:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 474,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2581:49:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 475,
"nodeType": "ExpressionStatement",
"src": "2581:49:1"
},
{
"assignments": [
477
],
"declarations": [
{
"constant": false,
"id": 477,
"mutability": "mutable",
"name": "vaa_guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "2687:29:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 476,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "2687:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 482,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "31",
"id": 480,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2732: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": 478,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "2719:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 479,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint32",
"nodeType": "MemberAccess",
"referencedDeclaration": 163,
"src": "2719: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": 481,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2719:15:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2687:47:1"
},
{
"assignments": [
484
],
"declarations": [
{
"constant": false,
"id": 484,
"mutability": "mutable",
"name": "len_signers",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "2745:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 483,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2745:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 489,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "35",
"id": 487,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2779: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": 485,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "2767:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 486,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "2767: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": 488,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2767:14:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2745:36:1"
},
{
"assignments": [
491
],
"declarations": [
{
"constant": false,
"id": 491,
"mutability": "mutable",
"name": "offset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "2791:11:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 490,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2791:4:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 497,
"initialValue": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 496,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "36",
"id": 492,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2805: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": 495,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3636",
"id": 493,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2809:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_66_by_1",
"typeString": "int_const 66"
},
"value": "66"
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"id": 494,
"name": "len_signers",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 484,
"src": "2814:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2809:16:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2805:20:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2791:34:1"
},
{
"assignments": [
499
],
"declarations": [
{
"constant": false,
"id": 499,
"mutability": "mutable",
"name": "hash",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "2947:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 498,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2947:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 510,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 503,
"name": "offset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 491,
"src": "2982:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 507,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 504,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "2990:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 505,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2990:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 506,
"name": "offset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 491,
"src": "3003:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2990:19:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 501,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "2972:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 502,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "slice",
"nodeType": "MemberAccess",
"referencedDeclaration": 55,
"src": "2972: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": 508,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2972:38:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 500,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "2962:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 509,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2962:49:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2947:64:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 515,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "3029:19:1",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 512,
"name": "consumedVAAs",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 407,
"src": "3030:12:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 514,
"indexExpression": {
"argumentTypes": null,
"id": 513,
"name": "hash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 499,
"src": "3043:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3030:18:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "5641412077617320616c7265616479206578656375746564",
"id": 516,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3050: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": 511,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3021:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 517,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3021:56:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 518,
"nodeType": "ExpressionStatement",
"src": "3021:56:1"
},
{
"assignments": [
520
],
"declarations": [
{
"constant": false,
"id": 520,
"mutability": "mutable",
"name": "guardian_set",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "3088:31:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 519,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 371,
"src": "3088:11:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 524,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 521,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 399,
"src": "3122:13:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 523,
"indexExpression": {
"argumentTypes": null,
"id": 522,
"name": "vaa_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 477,
"src": "3136:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3122:37:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3088:71:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 535,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 529,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 526,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 520,
"src": "3177:12:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 527,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "expiration_time",
"nodeType": "MemberAccess",
"referencedDeclaration": 370,
"src": "3177:28:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 528,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3209:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3177:33:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 534,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 530,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 520,
"src": "3214:12:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 531,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "expiration_time",
"nodeType": "MemberAccess",
"referencedDeclaration": 370,
"src": "3214:28:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 532,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "3245:5:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 533,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "timestamp",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3245:15:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3214:46:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3177:83:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "677561726469616e20736574206861732065787069726564",
"id": 536,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3262: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": 525,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3169:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 537,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3169:120:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 538,
"nodeType": "ExpressionStatement",
"src": "3169:120:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 552,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 550,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 547,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 544,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 540,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 520,
"src": "3309:12:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 541,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "keys",
"nodeType": "MemberAccess",
"referencedDeclaration": 368,
"src": "3309:17:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 542,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3309:24:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"argumentTypes": null,
"hexValue": "34",
"id": 543,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3336:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_4_by_1",
"typeString": "int_const 4"
},
"value": "4"
},
"src": "3309:28:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 545,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "3308:30:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "33",
"id": 546,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3341:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_3_by_1",
"typeString": "int_const 3"
},
"value": "3"
},
"src": "3308:34:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 548,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "3307:36:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 549,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3346:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "3307:40:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"id": 551,
"name": "len_signers",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 484,
"src": "3351:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3307:55:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "6e6f2071756f72756d",
"id": 553,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3364: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": 539,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3299:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 554,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3299:77:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 555,
"nodeType": "ExpressionStatement",
"src": "3299:77:1"
},
{
"body": {
"id": 629,
"nodeType": "Block",
"src": "3426:334:1",
"statements": [
{
"assignments": [
567
],
"declarations": [
{
"constant": false,
"id": 567,
"mutability": "mutable",
"name": "index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 629,
"src": "3440:11:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 566,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3440:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 576,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "36",
"id": 570,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3466: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": 573,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 571,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 557,
"src": "3470:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3636",
"id": 572,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3474:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_66_by_1",
"typeString": "int_const 66"
},
"value": "66"
},
"src": "3470:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3466:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 568,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "3454:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 569,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "3454: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": 575,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3454:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3440:37:1"
},
{
"assignments": [
578
],
"declarations": [
{
"constant": false,
"id": 578,
"mutability": "mutable",
"name": "r",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 629,
"src": "3491:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 577,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "3491:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 587,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 585,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "37",
"id": 581,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3517: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": 584,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 582,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 557,
"src": "3521:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3636",
"id": 583,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3525:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_66_by_1",
"typeString": "int_const 66"
},
"value": "66"
},
"src": "3521:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3517:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 579,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "3503:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toBytes32",
"nodeType": "MemberAccess",
"referencedDeclaration": 298,
"src": "3503: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": 586,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3503:25:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3491:37:1"
},
{
"assignments": [
589
],
"declarations": [
{
"constant": false,
"id": 589,
"mutability": "mutable",
"name": "s",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 629,
"src": "3542:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 588,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "3542:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 598,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 596,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3339",
"id": 592,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3568: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": 595,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 593,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 557,
"src": "3573:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3636",
"id": 594,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3577:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_66_by_1",
"typeString": "int_const 66"
},
"value": "66"
},
"src": "3573:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3568:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 590,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "3554:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 591,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toBytes32",
"nodeType": "MemberAccess",
"referencedDeclaration": 298,
"src": "3554: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": 597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3554:26:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3542:38:1"
},
{
"assignments": [
600
],
"declarations": [
{
"constant": false,
"id": 600,
"mutability": "mutable",
"name": "v",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 629,
"src": "3594:7:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 599,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3594:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 609,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 607,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3731",
"id": 603,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3616: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": 606,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 604,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 557,
"src": "3621:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3636",
"id": 605,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3625:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_66_by_1",
"typeString": "int_const 66"
},
"value": "66"
},
"src": "3621:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3616:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 601,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "3604:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 602,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "3604: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": 608,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3604:24:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3594:34:1"
},
{
"expression": {
"argumentTypes": null,
"id": 612,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 610,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 600,
"src": "3642:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "3237",
"id": 611,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3647:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_27_by_1",
"typeString": "int_const 27"
},
"value": "27"
},
"src": "3642:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 613,
"nodeType": "ExpressionStatement",
"src": "3642:7:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 625,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 616,
"name": "hash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 499,
"src": "3681:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 617,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 600,
"src": "3687:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 618,
"name": "r",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 578,
"src": "3690:1:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 619,
"name": "s",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 589,
"src": "3693: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": 615,
"name": "ecrecover",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -6,
"src": "3671: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": 620,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3671:24:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 621,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 520,
"src": "3699:12:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 622,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "keys",
"nodeType": "MemberAccess",
"referencedDeclaration": 368,
"src": "3699:17:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 624,
"indexExpression": {
"argumentTypes": null,
"id": 623,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 567,
"src": "3717:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3699:24:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3671:52:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "564141207369676e617475726520696e76616c6964",
"id": 626,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3725: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": 614,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3663:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 627,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3663:86:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 628,
"nodeType": "ExpressionStatement",
"src": "3663:86:1"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 562,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 560,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 557,
"src": "3404:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 561,
"name": "len_signers",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 484,
"src": "3408:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3404:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 630,
"initializationExpression": {
"assignments": [
557
],
"declarations": [
{
"constant": false,
"id": 557,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 630,
"src": "3392:6:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 556,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "3392:4:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 559,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 558,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3401:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "3392:10:1"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "3421:3:1",
"subExpression": {
"argumentTypes": null,
"id": 563,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 557,
"src": "3421:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 565,
"nodeType": "ExpressionStatement",
"src": "3421:3:1"
},
"nodeType": "ForStatement",
"src": "3387:373:1"
},
{
"assignments": [
632
],
"declarations": [
{
"constant": false,
"id": 632,
"mutability": "mutable",
"name": "action",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "3770:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 631,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3770:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 639,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 637,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 635,
"name": "offset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 491,
"src": "3797:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "34",
"id": 636,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3806:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_4_by_1",
"typeString": "int_const 4"
},
"value": "4"
},
"src": "3797:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 633,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "3785:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 634,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "3785: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": 638,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3785:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3770:38:1"
},
{
"assignments": [
641
],
"declarations": [
{
"constant": false,
"id": 641,
"mutability": "mutable",
"name": "payload",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "3818:20:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 640,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3818:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 655,
"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": 491,
"src": "3851:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "35",
"id": 645,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3860:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_5_by_1",
"typeString": "int_const 5"
},
"value": "5"
},
"src": "3851:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 653,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 647,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "3863:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3863:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 651,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 649,
"name": "offset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 491,
"src": "3877:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "35",
"id": 650,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3886:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_5_by_1",
"typeString": "int_const 5"
},
"value": "5"
},
"src": "3877:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 652,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "3876:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3863:25:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 642,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "3841:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 643,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "slice",
"nodeType": "MemberAccess",
"referencedDeclaration": 55,
"src": "3841: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": 654,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3841:48:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3818:71:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 658,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 656,
"name": "action",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 632,
"src": "3927:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30783031",
"id": 657,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3937:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "0x01"
},
"src": "3927:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 673,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 671,
"name": "action",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 632,
"src": "4135:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30783130",
"id": 672,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4145:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_16_by_1",
"typeString": "int_const 16"
},
"value": "0x10"
},
"src": "4135:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 683,
"nodeType": "Block",
"src": "4202:53:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "696e76616c69642056414120616374696f6e",
"id": 680,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4223: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": 679,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
-19,
-19
],
"referencedDeclaration": -19,
"src": "4216:6:1",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 681,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4216:28:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 682,
"nodeType": "ExpressionStatement",
"src": "4216:28:1"
}
]
},
"id": 684,
"nodeType": "IfStatement",
"src": "4131:124:1",
"trueBody": {
"id": 678,
"nodeType": "Block",
"src": "4151:45:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 675,
"name": "payload",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 641,
"src": "4177:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 674,
"name": "vaaTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 927,
"src": "4165:11:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (bytes memory)"
}
},
"id": 676,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4165:20:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 677,
"nodeType": "ExpressionStatement",
"src": "4165:20:1"
}
]
}
},
"id": 685,
"nodeType": "IfStatement",
"src": "3923:332:1",
"trueBody": {
"id": 670,
"nodeType": "Block",
"src": "3943:182:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 662,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 660,
"name": "vaa_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 477,
"src": "3965:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 661,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 401,
"src": "3991:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "3965:44:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "6f6e6c79207468652063757272656e7420677561726469616e207365742063616e206368616e67652074686520677561726469616e20736574",
"id": 663,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4011: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": 659,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3957:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 664,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3957:114:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 665,
"nodeType": "ExpressionStatement",
"src": "3957:114:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 667,
"name": "payload",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 641,
"src": "4106:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 666,
"name": "vaaUpdateGuardianSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 792,
"src": "4085:20:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (bytes memory)"
}
},
"id": 668,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4085:29:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 669,
"nodeType": "ExpressionStatement",
"src": "4085:29:1"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"id": 690,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 686,
"name": "consumedVAAs",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 407,
"src": "4300:12:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 688,
"indexExpression": {
"argumentTypes": null,
"id": 687,
"name": "hash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 499,
"src": "4313:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4300:18:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 689,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4321:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "4300:25:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 691,
"nodeType": "ExpressionStatement",
"src": "4300:25:1"
}
]
},
"documentation": null,
"functionSelector": "3bc0aee6",
"id": 693,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 460,
"modifierName": {
"argumentTypes": null,
"id": 459,
"name": "nonReentrant",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3071,
"src": "2518:12:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2518:12:1"
}
],
"name": "submitVAA",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 458,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 457,
"mutability": "mutable",
"name": "vaa",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 693,
"src": "2486:18:1",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 456,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2486:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2476:34:1"
},
"returnParameters": {
"id": 461,
"nodeType": "ParameterList",
"parameters": [],
"src": "2531:0:1"
},
"scope": 1254,
"src": "2458:1874:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 791,
"nodeType": "Block",
"src": "4395:755:1",
"statements": [
{
"assignments": [
699
],
"declarations": [
{
"constant": false,
"id": 699,
"mutability": "mutable",
"name": "new_guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 791,
"src": "4405:29:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 698,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "4405:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 704,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 702,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4451: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": 700,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 695,
"src": "4437:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 701,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint32",
"nodeType": "MemberAccess",
"referencedDeclaration": 163,
"src": "4437: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": 703,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4437:16:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4405:48:1"
},
{
"assignments": [
706
],
"declarations": [
{
"constant": false,
"id": 706,
"mutability": "mutable",
"name": "len",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 791,
"src": "4463:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 705,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4463:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 711,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "34",
"id": 709,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4488: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": 707,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 695,
"src": "4475:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 708,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "4475: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": 710,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4475:15:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4463:27:1"
},
{
"assignments": [
716
],
"declarations": [
{
"constant": false,
"id": 716,
"mutability": "mutable",
"name": "new_guardians",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 791,
"src": "4501:30:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 714,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4501:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 715,
"length": null,
"nodeType": "ArrayTypeName",
"src": "4501:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 722,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 720,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 706,
"src": "4548:3:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 719,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "4534: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": 717,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4538:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 718,
"length": null,
"nodeType": "ArrayTypeName",
"src": "4538:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
}
},
"id": 721,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4534:18:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4501:51:1"
},
{
"body": {
"id": 750,
"nodeType": "Block",
"src": "4593:103:1",
"statements": [
{
"assignments": [
734
],
"declarations": [
{
"constant": false,
"id": 734,
"mutability": "mutable",
"name": "addr",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 750,
"src": "4607:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 733,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4607:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 743,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 741,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "35",
"id": 737,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4637: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": 740,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 738,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 724,
"src": "4641:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3230",
"id": 739,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4645:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_20_by_1",
"typeString": "int_const 20"
},
"value": "20"
},
"src": "4641:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4637:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 735,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 695,
"src": "4622:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 736,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 82,
"src": "4622: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": 742,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4622:26:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4607:41:1"
},
{
"expression": {
"argumentTypes": null,
"id": 748,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 744,
"name": "new_guardians",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 716,
"src": "4662:13:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 746,
"indexExpression": {
"argumentTypes": null,
"id": 745,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 724,
"src": "4676:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4662:16:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 747,
"name": "addr",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 734,
"src": "4681:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4662:23:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 749,
"nodeType": "ExpressionStatement",
"src": "4662:23:1"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 729,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 727,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 724,
"src": "4579:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 728,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 706,
"src": "4583:3:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "4579:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 751,
"initializationExpression": {
"assignments": [
724
],
"declarations": [
{
"constant": false,
"id": 724,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 751,
"src": "4567:6:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 723,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "4567:4:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 726,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 725,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4576:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "4567:10:1"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 731,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "4588:3:1",
"subExpression": {
"argumentTypes": null,
"id": 730,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 724,
"src": "4588:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 732,
"nodeType": "ExpressionStatement",
"src": "4588:3:1"
},
"nodeType": "ForStatement",
"src": "4562:134:1"
},
{
"assignments": [
753
],
"declarations": [
{
"constant": false,
"id": 753,
"mutability": "mutable",
"name": "old_guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 791,
"src": "4706:29:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 752,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "4706:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 755,
"initialValue": {
"argumentTypes": null,
"id": 754,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 401,
"src": "4738:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4706:50:1"
},
{
"expression": {
"argumentTypes": null,
"id": 758,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 756,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 401,
"src": "4766:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 757,
"name": "new_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 699,
"src": "4787:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "4766:43:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 759,
"nodeType": "ExpressionStatement",
"src": "4766:43:1"
},
{
"assignments": [
761
],
"declarations": [
{
"constant": false,
"id": 761,
"mutability": "mutable",
"name": "new_guardian_set",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 791,
"src": "4820:35:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 760,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 371,
"src": "4820:11:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 766,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 763,
"name": "new_guardians",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 716,
"src": "4870:13:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
{
"argumentTypes": null,
"hexValue": "30",
"id": 764,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4885: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": 762,
"name": "GuardianSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 371,
"src": "4858:11:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_struct$_GuardianSet_$371_storage_ptr_$",
"typeString": "type(struct Wormhole.GuardianSet storage pointer)"
}
},
"id": 765,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "structConstructorCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4858:29:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4820:67:1"
},
{
"expression": {
"argumentTypes": null,
"id": 771,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 767,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 399,
"src": "4897:13:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 769,
"indexExpression": {
"argumentTypes": null,
"id": 768,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 401,
"src": "4911:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4897:33:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 770,
"name": "new_guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 761,
"src": "4933:16:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"src": "4897:52:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"id": 772,
"nodeType": "ExpressionStatement",
"src": "4897:52:1"
},
{
"expression": {
"argumentTypes": null,
"id": 784,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 773,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 399,
"src": "4959:13:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 775,
"indexExpression": {
"argumentTypes": null,
"id": 774,
"name": "old_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 753,
"src": "4973:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4959:37:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"id": 776,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "expiration_time",
"nodeType": "MemberAccess",
"referencedDeclaration": 370,
"src": "4959:53:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 783,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 779,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "5022:5:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 780,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "timestamp",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5022:15:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 778,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5015:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint32_$",
"typeString": "type(uint32)"
},
"typeName": {
"id": 777,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "5015:6:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 781,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5015:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 782,
"name": "guardian_set_expirity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 403,
"src": "5041:21:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "5015:47:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "4959:103:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 785,
"nodeType": "ExpressionStatement",
"src": "4959:103:1"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 787,
"name": "old_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 753,
"src": "5100:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
{
"argumentTypes": null,
"id": 788,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 401,
"src": "5124:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
{
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
],
"id": 786,
"name": "LogGuardianSetChanged",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 377,
"src": "5078:21:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint32_$returns$__$",
"typeString": "function (uint32,uint32)"
}
},
"id": 789,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5078:65:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 790,
"nodeType": "EmitStatement",
"src": "5073:70:1"
}
]
},
"documentation": null,
"id": 792,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "vaaUpdateGuardianSet",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 696,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 695,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 792,
"src": "4368:17:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 694,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4368:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4367:19:1"
},
"returnParameters": {
"id": 697,
"nodeType": "ParameterList",
"parameters": [],
"src": "4395:0:1"
},
"scope": 1254,
"src": "4338:812:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 926,
"nodeType": "Block",
"src": "5204:1399:1",
"statements": [
{
"assignments": [
798
],
"declarations": [
{
"constant": false,
"id": 798,
"mutability": "mutable",
"name": "source_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 926,
"src": "5257:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 797,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "5257:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 803,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "34",
"id": 801,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5291: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": 799,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "5278:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 800,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "5278: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": 802,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5278:15:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5257:36:1"
},
{
"assignments": [
805
],
"declarations": [
{
"constant": false,
"id": 805,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 926,
"src": "5304:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 804,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "5304:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 810,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "35",
"id": 808,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5338: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": 806,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "5325:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 807,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "5325: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": 809,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5325:15:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5304:36:1"
},
{
"assignments": [
812
],
"declarations": [
{
"constant": false,
"id": 812,
"mutability": "mutable",
"name": "target_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 926,
"src": "5459:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 811,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5459:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 819,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_rational_50_by_1",
"typeString": "int_const 50"
},
"id": 817,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3338",
"id": 815,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5499: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": 816,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5504:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_12_by_1",
"typeString": "int_const 12"
},
"value": "12"
},
"src": "5499: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": 813,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "5484:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 814,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 82,
"src": "5484: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": 818,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5484:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5459:48:1"
},
{
"assignments": [
821
],
"declarations": [
{
"constant": false,
"id": 821,
"mutability": "mutable",
"name": "token_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 926,
"src": "5518:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 820,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "5518:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 826,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3730",
"id": 824,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5551: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": 822,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "5538:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 823,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "5538: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": 825,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5538:16:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5518:36:1"
},
{
"assignments": [
828
],
"declarations": [
{
"constant": false,
"id": 828,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 926,
"src": "5618:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 827,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5618:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 833,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "313034",
"id": 831,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5650:3:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_104_by_1",
"typeString": "int_const 104"
},
"value": "104"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_104_by_1",
"typeString": "int_const 104"
}
],
"expression": {
"argumentTypes": null,
"id": 829,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "5635:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 830,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint256",
"nodeType": "MemberAccess",
"referencedDeclaration": 271,
"src": "5635: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": 832,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5635:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5618:36:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 837,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 835,
"name": "source_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 798,
"src": "5673:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 836,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 805,
"src": "5689:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "5673:28:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "73616d6520636861696e207472616e736665727320617265206e6f7420737570706f72746564",
"id": 838,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5703: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": 834,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5665:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 839,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5665:79:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 840,
"nodeType": "ExpressionStatement",
"src": "5665:79:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 844,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 842,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 805,
"src": "5762:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 843,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 362,
"src": "5778:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "5762:24:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "7472616e73666572206d75737420626520696e636f6d696e67",
"id": 845,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5788: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": 841,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5754:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 846,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5754:62:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 847,
"nodeType": "ExpressionStatement",
"src": "5754:62:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 850,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 848,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 821,
"src": "5831:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 849,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 362,
"src": "5846:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "5831:23:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 924,
"nodeType": "Block",
"src": "6452:145:1",
"statements": [
{
"assignments": [
908
],
"declarations": [
{
"constant": false,
"id": 908,
"mutability": "mutable",
"name": "token_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 924,
"src": "6466:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 907,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6466:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 915,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_rational_83_by_1",
"typeString": "int_const 83"
},
"id": 913,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3731",
"id": 911,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6505: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": 912,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6510:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_12_by_1",
"typeString": "int_const 12"
},
"value": "12"
},
"src": "6505: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": 909,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "6490:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 910,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 82,
"src": "6490: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": 914,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6490:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6466:47:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 920,
"name": "target_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 812,
"src": "6563:14:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 921,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 828,
"src": "6579: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": 917,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 908,
"src": "6535:13:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 916,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2615,
"src": "6528:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$",
"typeString": "type(contract IERC20)"
}
},
"id": 918,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6528:21:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2615",
"typeString": "contract IERC20"
}
},
"id": 919,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "safeTransfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 2649,
"src": "6528:34:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2615_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2615_$",
"typeString": "function (contract IERC20,address,uint256)"
}
},
"id": 922,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6528:58:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 923,
"nodeType": "ExpressionStatement",
"src": "6528:58:1"
}
]
},
"id": 925,
"nodeType": "IfStatement",
"src": "5827:770:1",
"trueBody": {
"id": 906,
"nodeType": "Block",
"src": "5856:590:1",
"statements": [
{
"assignments": [
852
],
"declarations": [
{
"constant": false,
"id": 852,
"mutability": "mutable",
"name": "token_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 906,
"src": "5870:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 851,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5870:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 857,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3731",
"id": 855,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5909: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": 853,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "5894:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 854,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toBytes32",
"nodeType": "MemberAccess",
"referencedDeclaration": 298,
"src": "5894: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": 856,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5894:18:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5870:42:1"
},
{
"assignments": [
859
],
"declarations": [
{
"constant": false,
"id": 859,
"mutability": "mutable",
"name": "asset_id",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 906,
"src": "5926:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 858,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5926:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 867,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 863,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 821,
"src": "5972:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 864,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 852,
"src": "5985:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 861,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "5955:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 862,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5955:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 865,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5955:44:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 860,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "5945:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 866,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5945:55:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5926:74:1"
},
{
"assignments": [
869
],
"declarations": [
{
"constant": false,
"id": 869,
"mutability": "mutable",
"name": "wrapped_asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 906,
"src": "6092:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 868,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6092:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 873,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 870,
"name": "wrappedAssets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 411,
"src": "6116:13:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
}
},
"id": 872,
"indexExpression": {
"argumentTypes": null,
"id": 871,
"name": "asset_id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 859,
"src": "6130:8:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6116:23:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6092:47:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 879,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 874,
"name": "wrapped_asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 869,
"src": "6157:13:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 877,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6182: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": 876,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "6174:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 875,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6174:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 878,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6174:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "6157:27:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 897,
"nodeType": "IfStatement",
"src": "6153:212:1",
"trueBody": {
"id": 896,
"nodeType": "Block",
"src": "6186:179:1",
"statements": [
{
"assignments": [
881
],
"declarations": [
{
"constant": false,
"id": 881,
"mutability": "mutable",
"name": "asset_decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 896,
"src": "6204:20:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 880,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "6204:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 886,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "313033",
"id": 884,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6240: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": 882,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "6227:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 883,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "6227: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": 885,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6227:17:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6204:40:1"
},
{
"expression": {
"argumentTypes": null,
"id": 894,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 887,
"name": "wrapped_asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 869,
"src": "6262:13:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 889,
"name": "asset_id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 859,
"src": "6297:8:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 890,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 821,
"src": "6307:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 891,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 852,
"src": "6320:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 892,
"name": "asset_decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 881,
"src": "6335:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 888,
"name": "deployWrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 970,
"src": "6278:18:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_uint8_$returns$_t_address_$",
"typeString": "function (bytes32,uint8,bytes32,uint8) returns (address)"
}
},
"id": 893,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6278:72:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "6262:88:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 895,
"nodeType": "ExpressionStatement",
"src": "6262:88:1"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 902,
"name": "target_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 812,
"src": "6412:14:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 903,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 828,
"src": "6428: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": 899,
"name": "wrapped_asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 869,
"src": "6392:13:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 898,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1811,
"src": "6379:12:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 900,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6379:27:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1811",
"typeString": "contract WrappedAsset"
}
},
"id": 901,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "mint",
"nodeType": "MemberAccess",
"referencedDeclaration": 1349,
"src": "6379:32:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256) external"
}
},
"id": 904,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6379:56:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 905,
"nodeType": "ExpressionStatement",
"src": "6379:56:1"
}
]
}
}
]
},
"documentation": null,
"id": 927,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "vaaTransfer",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 795,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 794,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 927,
"src": "5177:17:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 793,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5177:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5176:19:1"
},
"returnParameters": {
"id": 796,
"nodeType": "ParameterList",
"parameters": [],
"src": "5204:0:1"
},
"scope": 1254,
"src": "5156:1447:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 969,
"nodeType": "Block",
"src": "6740:808:1",
"statements": [
{
"assignments": [
941
],
"declarations": [
{
"constant": false,
"id": 941,
"mutability": "mutable",
"name": "targetBytes",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 969,
"src": "6918:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
},
"typeName": {
"id": 940,
"name": "bytes20",
"nodeType": "ElementaryTypeName",
"src": "6918:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 946,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 944,
"name": "wrappedAssetMaster",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 359,
"src": "6948:18:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 943,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "6940:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes20_$",
"typeString": "type(bytes20)"
},
"typeName": {
"id": 942,
"name": "bytes20",
"nodeType": "ElementaryTypeName",
"src": "6940:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 945,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6940:27:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6918:49:1"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "6986:348:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7000:24:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7019:4:1",
"type": "",
"value": "0x40"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "7013:5:1"
},
"nodeType": "YulFunctionCall",
"src": "7013:11:1"
},
"variables": [
{
"name": "clone",
"nodeType": "YulTypedName",
"src": "7004:5:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "7044:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7051:66:1",
"type": "",
"value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7037:6:1"
},
"nodeType": "YulFunctionCall",
"src": "7037:81:1"
},
"nodeType": "YulExpressionStatement",
"src": "7037:81:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "7142:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7149:4:1",
"type": "",
"value": "0x14"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7138:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7138:16:1"
},
{
"name": "targetBytes",
"nodeType": "YulIdentifier",
"src": "7156:11:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7131:6:1"
},
"nodeType": "YulFunctionCall",
"src": "7131:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "7131:37:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "7192:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7199:4:1",
"type": "",
"value": "0x28"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7188:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7188:16:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7206:66:1",
"type": "",
"value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7181:6:1"
},
"nodeType": "YulFunctionCall",
"src": "7181:92:1"
},
"nodeType": "YulExpressionStatement",
"src": "7181:92:1"
},
{
"nodeType": "YulAssignment",
"src": "7286:38:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7303:1:1",
"type": "",
"value": "0"
},
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "7306:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7313:4:1",
"type": "",
"value": "0x37"
},
{
"name": "seed",
"nodeType": "YulIdentifier",
"src": "7319:4:1"
}
],
"functionName": {
"name": "create2",
"nodeType": "YulIdentifier",
"src": "7295:7:1"
},
"nodeType": "YulFunctionCall",
"src": "7295:29:1"
},
"variableNames": [
{
"name": "asset",
"nodeType": "YulIdentifier",
"src": "7286:5:1"
}
]
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 938,
"isOffset": false,
"isSlot": false,
"src": "7286:5:1",
"valueSize": 1
},
{
"declaration": 929,
"isOffset": false,
"isSlot": false,
"src": "7319:4:1",
"valueSize": 1
},
{
"declaration": 941,
"isOffset": false,
"isSlot": false,
"src": "7156:11:1",
"valueSize": 1
}
],
"id": 947,
"nodeType": "InlineAssembly",
"src": "6977:357:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 952,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 931,
"src": "7403:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 953,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 933,
"src": "7416:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 954,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "7431:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 949,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "7385:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 948,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1811,
"src": "7372:12:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 950,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7372:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1811",
"typeString": "contract WrappedAsset"
}
},
"id": 951,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "initialize",
"nodeType": "MemberAccess",
"referencedDeclaration": 1328,
"src": "7372:30:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint8_$_t_bytes32_$_t_uint8_$returns$__$",
"typeString": "function (uint8,bytes32,uint8) external"
}
},
"id": 955,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7372:68:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 956,
"nodeType": "ExpressionStatement",
"src": "7372:68:1"
},
{
"expression": {
"argumentTypes": null,
"id": 961,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 957,
"name": "wrappedAssets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 411,
"src": "7476:13:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
}
},
"id": 959,
"indexExpression": {
"argumentTypes": null,
"id": 958,
"name": "seed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 929,
"src": "7490:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7476:19:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 960,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "7498:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "7476:27:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 962,
"nodeType": "ExpressionStatement",
"src": "7476:27:1"
},
{
"expression": {
"argumentTypes": null,
"id": 967,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 963,
"name": "isWrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 415,
"src": "7513:14:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 965,
"indexExpression": {
"argumentTypes": null,
"id": 964,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "7528:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7513:21:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 966,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7537:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "7513:28:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 968,
"nodeType": "ExpressionStatement",
"src": "7513:28:1"
}
]
},
"documentation": null,
"id": 970,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "deployWrappedAsset",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 936,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 929,
"mutability": "mutable",
"name": "seed",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 970,
"src": "6637:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 928,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "6637:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 931,
"mutability": "mutable",
"name": "token_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 970,
"src": "6651:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 930,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "6651:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 933,
"mutability": "mutable",
"name": "token_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 970,
"src": "6670:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 932,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "6670:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 935,
"mutability": "mutable",
"name": "decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 970,
"src": "6693:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 934,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "6693:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6636:72:1"
},
"returnParameters": {
"id": 939,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 938,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 970,
"src": "6726:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 937,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6726:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6725:15:1"
},
"scope": 1254,
"src": "6609:939:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 1182,
"nodeType": "Block",
"src": "7750:1642:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 990,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 988,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "7768:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 989,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7778:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "7768:11:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "616d6f756e74206d757374206e6f742062652030",
"id": 991,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7781: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": 987,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "7760:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 992,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7760:44:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 993,
"nodeType": "ExpressionStatement",
"src": "7760:44:1"
},
{
"assignments": [
995
],
"declarations": [
{
"constant": false,
"id": 995,
"mutability": "mutable",
"name": "asset_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1182,
"src": "7815:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 994,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "7815:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 997,
"initialValue": {
"argumentTypes": null,
"id": 996,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 362,
"src": "7835:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7815:28:1"
},
{
"assignments": [
999
],
"declarations": [
{
"constant": false,
"id": 999,
"mutability": "mutable",
"name": "asset_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1182,
"src": "7853:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 998,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "7853:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1000,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "7853:21:1"
},
{
"assignments": [
1002
],
"declarations": [
{
"constant": false,
"id": 1002,
"mutability": "mutable",
"name": "decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1182,
"src": "7884:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1001,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "7884:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1008,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1004,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "7907:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1003,
"name": "ERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2537,
"src": "7901:5:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$",
"typeString": "type(contract ERC20)"
}
},
"id": 1005,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7901:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$2537",
"typeString": "contract ERC20"
}
},
"id": 1006,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "decimals",
"nodeType": "MemberAccess",
"referencedDeclaration": 2113,
"src": "7901:21:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
"typeString": "function () view external returns (uint8)"
}
},
"id": 1007,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7901:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7884:40:1"
},
{
"condition": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1009,
"name": "isWrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 415,
"src": "7939:14:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1011,
"indexExpression": {
"argumentTypes": null,
"id": 1010,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "7954:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7939:21:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 1162,
"nodeType": "Block",
"src": "8161:1086:1",
"statements": [
{
"assignments": [
1039
],
"declarations": [
{
"constant": false,
"id": 1039,
"mutability": "mutable",
"name": "balanceBefore",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1162,
"src": "8175:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1038,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8175:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1049,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1046,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "8231:4:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Wormhole_$1254",
"typeString": "contract Wormhole"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Wormhole_$1254",
"typeString": "contract Wormhole"
}
],
"id": 1045,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8223:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1044,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8223:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1047,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8223: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": 1041,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "8206:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1040,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2615,
"src": "8199:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$",
"typeString": "type(contract IERC20)"
}
},
"id": 1042,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8199:13:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2615",
"typeString": "contract IERC20"
}
},
"id": 1043,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 2554,
"src": "8199:23:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 1048,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8199:38:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8175:62:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1054,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8282:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1055,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8282:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1058,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "8302:4:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Wormhole_$1254",
"typeString": "contract Wormhole"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Wormhole_$1254",
"typeString": "contract Wormhole"
}
],
"id": 1057,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8294:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1056,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8294:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1059,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8294:13:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 1060,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "8309: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": 1051,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "8258:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1050,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2615,
"src": "8251:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$",
"typeString": "type(contract IERC20)"
}
},
"id": 1052,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8251:13:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2615",
"typeString": "contract IERC20"
}
},
"id": 1053,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "safeTransferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 2674,
"src": "8251:30:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2615_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2615_$",
"typeString": "function (contract IERC20,address,address,uint256)"
}
},
"id": 1061,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8251:65:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1062,
"nodeType": "ExpressionStatement",
"src": "8251:65:1"
},
{
"assignments": [
1064
],
"declarations": [
{
"constant": false,
"id": 1064,
"mutability": "mutable",
"name": "balanceAfter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1162,
"src": "8330:20:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1063,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8330:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1074,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1071,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "8385:4:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Wormhole_$1254",
"typeString": "contract Wormhole"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Wormhole_$1254",
"typeString": "contract Wormhole"
}
],
"id": 1070,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8377:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1069,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8377:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1072,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8377: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": 1066,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "8360:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1065,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2615,
"src": "8353:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$",
"typeString": "type(contract IERC20)"
}
},
"id": 1067,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8353:13:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2615",
"typeString": "contract IERC20"
}
},
"id": 1068,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 2554,
"src": "8353:23:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 1073,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8353:38:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8330:61:1"
},
{
"expression": {
"argumentTypes": null,
"id": 1080,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1075,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "8596:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1078,
"name": "balanceBefore",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1039,
"src": "8622:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 1076,
"name": "balanceAfter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1064,
"src": "8605:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1077,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 1880,
"src": "8605: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": 1079,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8605:31:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8596:40:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1081,
"nodeType": "ExpressionStatement",
"src": "8596:40:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1084,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1082,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1002,
"src": "8711:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "39",
"id": 1083,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8722:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_9_by_1",
"typeString": "int_const 9"
},
"value": "9"
},
"src": "8711:12:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1130,
"nodeType": "IfStatement",
"src": "8707:339:1",
"trueBody": {
"id": 1129,
"nodeType": "Block",
"src": "8725:321:1",
"statements": [
{
"assignments": [
1086
],
"declarations": [
{
"constant": false,
"id": 1086,
"mutability": "mutable",
"name": "original_amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1129,
"src": "8743:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1085,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8743:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1088,
"initialValue": {
"argumentTypes": null,
"id": 1087,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "8769:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8743:32:1"
},
{
"expression": {
"argumentTypes": null,
"id": 1101,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1089,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "8793:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1099,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3130",
"id": 1092,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8813:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1097,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1095,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1002,
"src": "8827:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "39",
"id": 1096,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8838:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_9_by_1",
"typeString": "int_const 9"
},
"value": "9"
},
"src": "8827:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1094,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8819:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1093,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8819:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1098,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8819:21:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8813:27:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 1090,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "8802:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1091,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "div",
"nodeType": "MemberAccess",
"referencedDeclaration": 1960,
"src": "8802:10: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": 1100,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8802:39:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8793:48:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1102,
"nodeType": "ExpressionStatement",
"src": "8793:48:1"
},
{
"condition": {
"argumentTypes": null,
"id": 1103,
"name": "refund_dust",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 982,
"src": "8864:11:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1124,
"nodeType": "IfStatement",
"src": "8860:141:1",
"trueBody": {
"id": 1123,
"nodeType": "Block",
"src": "8877:124:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1108,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8921:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1109,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8921:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1119,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3130",
"id": 1112,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8953:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1117,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1115,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1002,
"src": "8967:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "39",
"id": 1116,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8978:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_9_by_1",
"typeString": "int_const 9"
},
"value": "9"
},
"src": "8967:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1114,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8959:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1113,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8959:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1118,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8959:21:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8953:27:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 1110,
"name": "original_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1086,
"src": "8933:15:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1111,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "mod",
"nodeType": "MemberAccess",
"referencedDeclaration": 2005,
"src": "8933:19: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": 1120,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8933:48:1",
"tryCall": false,
"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": 1105,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "8905:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1104,
"name": "ERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2537,
"src": "8899:5:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$",
"typeString": "type(contract ERC20)"
}
},
"id": 1106,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8899:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$2537",
"typeString": "contract ERC20"
}
},
"id": 1107,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 2158,
"src": "8899:21:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) external returns (bool)"
}
},
"id": 1121,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8899:83:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1122,
"nodeType": "ExpressionStatement",
"src": "8899:83:1"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"id": 1127,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1125,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1002,
"src": "9019:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "39",
"id": 1126,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9030:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_9_by_1",
"typeString": "int_const 9"
},
"value": "9"
},
"src": "9019:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1128,
"nodeType": "ExpressionStatement",
"src": "9019:12:1"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1148,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1145,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3130",
"id": 1134,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9085:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1143,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1138,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "9105:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1137,
"name": "ERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2537,
"src": "9099:5:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$",
"typeString": "type(contract ERC20)"
}
},
"id": 1139,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9099:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$2537",
"typeString": "contract ERC20"
}
},
"id": 1140,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "decimals",
"nodeType": "MemberAccess",
"referencedDeclaration": 2113,
"src": "9099:21:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
"typeString": "function () view external returns (uint8)"
}
},
"id": 1141,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9099:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "39",
"id": 1142,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9125:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_9_by_1",
"typeString": "int_const 9"
},
"value": "9"
},
"src": "9099:27:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1136,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9091:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1135,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9091:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1144,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9091:36:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9085:42:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 1132,
"name": "balanceAfter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1064,
"src": "9068:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1133,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "div",
"nodeType": "MemberAccess",
"referencedDeclaration": 1960,
"src": "9068: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": 1146,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9068:60:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"id": 1147,
"name": "MAX_UINT64",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 357,
"src": "9132:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
"src": "9068:74:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "6272696467652062616c616e636520776f756c6420657863656564206d6178696d756d",
"id": 1149,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9144:37:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4",
"typeString": "literal_string \"bridge balance would exceed maximum\""
},
"value": "bridge balance would exceed maximum"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4",
"typeString": "literal_string \"bridge balance would exceed maximum\""
}
],
"id": 1131,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "9060:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1150,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9060:122:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1151,
"nodeType": "ExpressionStatement",
"src": "9060:122:1"
},
{
"expression": {
"argumentTypes": null,
"id": 1160,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1152,
"name": "asset_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 999,
"src": "9197:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1157,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "9229:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1156,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9221:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1155,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9221:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1158,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9221:14:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1154,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9213:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1153,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9213:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1159,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9213:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"src": "9197:39:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1161,
"nodeType": "ExpressionStatement",
"src": "9197:39:1"
}
]
},
"id": 1163,
"nodeType": "IfStatement",
"src": "7935:1312:1",
"trueBody": {
"id": 1037,
"nodeType": "Block",
"src": "7962:193:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1016,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8001:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1017,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8001:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 1018,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "8013: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": 1013,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "7989:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1012,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1811,
"src": "7976:12:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 1014,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7976:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1811",
"typeString": "contract WrappedAsset"
}
},
"id": 1015,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "burn",
"nodeType": "MemberAccess",
"referencedDeclaration": 1370,
"src": "7976:24:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256) external"
}
},
"id": 1019,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7976:44:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1020,
"nodeType": "ExpressionStatement",
"src": "7976:44:1"
},
{
"expression": {
"argumentTypes": null,
"id": 1027,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1021,
"name": "asset_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 995,
"src": "8034:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1023,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "8061:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1022,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1811,
"src": "8048:12:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 1024,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8048:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1811",
"typeString": "contract WrappedAsset"
}
},
"id": 1025,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "assetChain",
"nodeType": "MemberAccess",
"referencedDeclaration": 1277,
"src": "8048:30:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
"typeString": "function () view external returns (uint8)"
}
},
"id": 1026,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8048:32:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "8034:46:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1028,
"nodeType": "ExpressionStatement",
"src": "8034:46:1"
},
{
"expression": {
"argumentTypes": null,
"id": 1035,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1029,
"name": "asset_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 999,
"src": "8094:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1031,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "8123:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1030,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1811,
"src": "8110:12:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 1032,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8110:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1811",
"typeString": "contract WrappedAsset"
}
},
"id": 1033,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "assetAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 1279,
"src": "8110:32:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
"typeString": "function () view external returns (bytes32)"
}
},
"id": 1034,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8110:34:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"src": "8094:50:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1036,
"nodeType": "ExpressionStatement",
"src": "8094:50:1"
}
]
}
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1165,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 978,
"src": "9278:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 1166,
"name": "asset_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 995,
"src": "9292:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 1167,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1002,
"src": "9305:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 1168,
"name": "asset_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 999,
"src": "9315:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1173,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "9346:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1174,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9346:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 1172,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9338:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1171,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9338:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1175,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9338:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1170,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9330:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1169,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9330:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1176,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9330:28:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 1177,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 976,
"src": "9360:9:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 1178,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "9371:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 1179,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 980,
"src": "9379:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"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": 1164,
"name": "LogTokensLocked",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 395,
"src": "9262:15:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$",
"typeString": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)"
}
},
"id": 1180,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9262:123:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1181,
"nodeType": "EmitStatement",
"src": "9257:128:1"
}
]
},
"documentation": null,
"functionSelector": "70713960",
"id": 1183,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 985,
"modifierName": {
"argumentTypes": null,
"id": 984,
"name": "nonReentrant",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3071,
"src": "7737:12:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "7737:12:1"
}
],
"name": "lockAssets",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 983,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 972,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1183,
"src": "7583:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 971,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7583:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 974,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1183,
"src": "7606:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 973,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7606:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 976,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1183,
"src": "7630:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 975,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "7630:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 978,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1183,
"src": "7657:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 977,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "7657:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 980,
"mutability": "mutable",
"name": "nonce",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1183,
"src": "7685:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 979,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "7685:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 982,
"mutability": "mutable",
"name": "refund_dust",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1183,
"src": "7707:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 981,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7707:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7573:156:1"
},
"returnParameters": {
"id": 986,
"nodeType": "ParameterList",
"parameters": [],
"src": "7750:0:1"
},
"scope": 1254,
"src": "7554:1838:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1236,
"nodeType": "Block",
"src": "9526:334:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1198,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1195,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "9544:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1196,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9544:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1197,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9557:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "9544:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "616d6f756e74206d757374206e6f742062652030",
"id": 1199,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9560: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": 1194,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "9536:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1200,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9536:47:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1201,
"nodeType": "ExpressionStatement",
"src": "9536:47:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1203,
"name": "WETHAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 365,
"src": "9632:11:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1202,
"name": "WETH",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1265,
"src": "9627:4:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WETH_$1265_$",
"typeString": "type(contract WETH)"
}
},
"id": 1204,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9627:17:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WETH_$1265",
"typeString": "contract WETH"
}
},
"id": 1205,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "deposit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1259,
"src": "9627:25:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$__$returns$__$",
"typeString": "function () payable external"
}
},
"id": 1208,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"names": [
"value"
],
"nodeType": "FunctionCallOptions",
"options": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1206,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "9661:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1207,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9661:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"src": "9627:44:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$__$returns$__$value",
"typeString": "function () payable external"
}
},
"id": 1209,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9627:46:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1210,
"nodeType": "ExpressionStatement",
"src": "9627:46:1"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1212,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1187,
"src": "9736:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 1213,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 362,
"src": "9750:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"hexValue": "3138",
"id": 1214,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9760:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_18_by_1",
"typeString": "int_const 18"
},
"value": "18"
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1219,
"name": "WETHAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 365,
"src": "9780:11:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1218,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9772:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1217,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9772:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1220,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9772:20:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1216,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9764:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1215,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9764:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1221,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9764:29:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1226,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "9811:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1227,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9811:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 1225,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9803:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1224,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9803:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1228,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9803:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1223,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9795:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1222,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9795:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1229,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9795:28:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 1230,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1185,
"src": "9825:9:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1231,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "9836:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1232,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9836:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 1233,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1189,
"src": "9847:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_rational_18_by_1",
"typeString": "int_const 18"
},
{
"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": 1211,
"name": "LogTokensLocked",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 395,
"src": "9720:15:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$",
"typeString": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)"
}
},
"id": 1234,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9720:133:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1235,
"nodeType": "EmitStatement",
"src": "9715:138:1"
}
]
},
"documentation": null,
"functionSelector": "58d62e46",
"id": 1237,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1192,
"modifierName": {
"argumentTypes": null,
"id": 1191,
"name": "nonReentrant",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3071,
"src": "9513:12:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "9513:12:1"
}
],
"name": "lockETH",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1190,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1185,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1237,
"src": "9424:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1184,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9424:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1187,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1237,
"src": "9451:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1186,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "9451:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1189,
"mutability": "mutable",
"name": "nonce",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1237,
"src": "9479:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 1188,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "9479:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9414:83:1"
},
"returnParameters": {
"id": 1193,
"nodeType": "ParameterList",
"parameters": [],
"src": "9526:0:1"
},
"scope": 1254,
"src": "9398:462:1",
"stateMutability": "payable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1244,
"nodeType": "Block",
"src": "9894:57:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61",
"id": 1241,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9902: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": 1240,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
-19,
-19
],
"referencedDeclaration": -19,
"src": "9895:6:1",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 1242,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9895:54:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1243,
"nodeType": "ExpressionStatement",
"src": "9895:54:1"
}
]
},
"documentation": null,
"id": 1245,
"implemented": true,
"kind": "fallback",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1238,
"nodeType": "ParameterList",
"parameters": [],
"src": "9874:2:1"
},
"returnParameters": {
"id": 1239,
"nodeType": "ParameterList",
"parameters": [],
"src": "9894:0:1"
},
"scope": 1254,
"src": "9866:85:1",
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 1252,
"nodeType": "Block",
"src": "9984:57:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61",
"id": 1249,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9992: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": 1248,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
-19,
-19
],
"referencedDeclaration": -19,
"src": "9985:6:1",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 1250,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9985:54:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1251,
"nodeType": "ExpressionStatement",
"src": "9985:54:1"
}
]
},
"documentation": null,
"id": 1253,
"implemented": true,
"kind": "receive",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1246,
"nodeType": "ParameterList",
"parameters": [],
"src": "9964:2:1"
},
"returnParameters": {
"id": 1247,
"nodeType": "ParameterList",
"parameters": [],
"src": "9984:0:1"
},
"scope": 1254,
"src": "9957:84:1",
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
}
],
"scope": 1266,
"src": "502:9541:1"
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1255,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2615,
"src": "10064:6:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2615",
"typeString": "contract IERC20"
}
},
"id": 1256,
"nodeType": "InheritanceSpecifier",
"src": "10064:6:1"
}
],
"contractDependencies": [
2615
],
"contractKind": "interface",
"documentation": null,
"fullyImplemented": false,
"id": 1265,
"linearizedBaseContracts": [
1265,
2615
],
"name": "WETH",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": null,
"documentation": null,
"functionSelector": "d0e30db0",
"id": 1259,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "deposit",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1257,
"nodeType": "ParameterList",
"parameters": [],
"src": "10093:2:1"
},
"returnParameters": {
"id": 1258,
"nodeType": "ParameterList",
"parameters": [],
"src": "10112:0:1"
},
"scope": 1265,
"src": "10077:36:1",
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": null,
"functionSelector": "2e1a7d4d",
"id": 1264,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "withdraw",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1262,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1261,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1264,
"src": "10137:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1260,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10137:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10136:16:1"
},
"returnParameters": {
"id": 1263,
"nodeType": "ParameterList",
"parameters": [],
"src": "10161:0:1"
},
"scope": 1265,
"src": "10119:43:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 1266,
"src": "10046:118:1"
}
],
"src": "103:10062:1"
},
"legacyAST": {
"absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/Wormhole.sol",
"exportedSymbols": {
"WETH": [
1265
],
"Wormhole": [
1254
]
},
"id": 1266,
"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/ERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/ERC20.sol",
"id": 337,
"nodeType": "ImportDirective",
"scope": 1266,
"sourceUnit": 2538,
"src": "162:55:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/IERC20.sol",
"id": 338,
"nodeType": "ImportDirective",
"scope": 1266,
"sourceUnit": 2616,
"src": "218:56:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
"file": "@openzeppelin/contracts/token/ERC20/SafeERC20.sol",
"id": 339,
"nodeType": "ImportDirective",
"scope": 1266,
"sourceUnit": 2829,
"src": "275:59:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/math/SafeMath.sol",
"file": "@openzeppelin/contracts/math/SafeMath.sol",
"id": 340,
"nodeType": "ImportDirective",
"scope": 1266,
"sourceUnit": 2031,
"src": "335:51:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
"file": "@openzeppelin/contracts/utils/ReentrancyGuard.sol",
"id": 341,
"nodeType": "ImportDirective",
"scope": 1266,
"sourceUnit": 3073,
"src": "387:59:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/BytesLib.sol",
"file": "./BytesLib.sol",
"id": 342,
"nodeType": "ImportDirective",
"scope": 1266,
"sourceUnit": 334,
"src": "447:24:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"absolutePath": "/home/hhofstadt/Dev/certus/wormhole/ethereum/contracts/WrappedAsset.sol",
"file": "./WrappedAsset.sol",
"id": 343,
"nodeType": "ImportDirective",
"scope": 1266,
"sourceUnit": 1812,
"src": "472:28:1",
"symbolAliases": [],
"unitAlias": ""
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 344,
"name": "ReentrancyGuard",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 3072,
"src": "523:15:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_ReentrancyGuard_$3072",
"typeString": "contract ReentrancyGuard"
}
},
"id": 345,
"nodeType": "InheritanceSpecifier",
"src": "523:15:1"
}
],
"contractDependencies": [
3072
],
"contractKind": "contract",
"documentation": null,
"fullyImplemented": true,
"id": 1254,
"linearizedBaseContracts": [
1254,
3072
],
"name": "Wormhole",
"nodeType": "ContractDefinition",
"nodes": [
{
"id": 348,
"libraryName": {
"contractScope": null,
"id": 346,
"name": "SafeERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2828,
"src": "551:9:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeERC20_$2828",
"typeString": "library SafeERC20"
}
},
"nodeType": "UsingForDirective",
"src": "545:27:1",
"typeName": {
"contractScope": null,
"id": 347,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2615,
"src": "565:6:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2615",
"typeString": "contract IERC20"
}
}
},
{
"id": 351,
"libraryName": {
"contractScope": null,
"id": 349,
"name": "BytesLib",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 333,
"src": "583:8:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_BytesLib_$333",
"typeString": "library BytesLib"
}
},
"nodeType": "UsingForDirective",
"src": "577:25:1",
"typeName": {
"id": 350,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "596:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
}
},
{
"id": 354,
"libraryName": {
"contractScope": null,
"id": 352,
"name": "SafeMath",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2030,
"src": "613:8:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_SafeMath_$2030",
"typeString": "library SafeMath"
}
},
"nodeType": "UsingForDirective",
"src": "607:27:1",
"typeName": {
"id": 353,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "626:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
},
{
"constant": true,
"id": 357,
"mutability": "constant",
"name": "MAX_UINT64",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "640:55:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
},
"typeName": {
"id": 355,
"name": "uint64",
"nodeType": "ElementaryTypeName",
"src": "640:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
"value": {
"argumentTypes": null,
"hexValue": "31385f3434365f3734345f3037335f3730395f3535315f363135",
"id": 356,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "669:26:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_18446744073709551615_by_1",
"typeString": "int_const 18446744073709551615"
},
"value": "18_446_744_073_709_551_615"
},
"visibility": "internal"
},
{
"constant": false,
"functionSelector": "99da1d3c",
"id": 359,
"mutability": "mutable",
"name": "wrappedAssetMaster",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "747:33:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 358,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "747:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"id": 362,
"mutability": "mutable",
"name": "CHAIN_ID",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "815:18:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 360,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "815:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": {
"argumentTypes": null,
"hexValue": "32",
"id": 361,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "832:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_2_by_1",
"typeString": "int_const 2"
},
"value": "2"
},
"visibility": "internal"
},
{
"constant": true,
"id": 365,
"mutability": "constant",
"name": "WETHAddress",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "885:73:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 363,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "885:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": {
"argumentTypes": null,
"hexValue": "307843303261614133396232323346453844304130653543344632376541443930383343373536436332",
"id": 364,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "916:42:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
},
"value": "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"
},
"visibility": "internal"
},
{
"canonicalName": "Wormhole.GuardianSet",
"id": 371,
"members": [
{
"constant": false,
"id": 368,
"mutability": "mutable",
"name": "keys",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 371,
"src": "994:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 366,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "994:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 367,
"length": null,
"nodeType": "ArrayTypeName",
"src": "994:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 370,
"mutability": "mutable",
"name": "expiration_time",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 371,
"src": "1018:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 369,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1018:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"name": "GuardianSet",
"nodeType": "StructDefinition",
"scope": 1254,
"src": "965:82:1",
"visibility": "public"
},
{
"anonymous": false,
"documentation": null,
"id": 377,
"name": "LogGuardianSetChanged",
"nodeType": "EventDefinition",
"parameters": {
"id": 376,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 373,
"indexed": false,
"mutability": "mutable",
"name": "oldGuardianIndex",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 377,
"src": "1090:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 372,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1090:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 375,
"indexed": false,
"mutability": "mutable",
"name": "newGuardianIndex",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 377,
"src": "1123:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 374,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1123:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1080:72:1"
},
"src": "1053:100:1"
},
{
"anonymous": false,
"documentation": null,
"id": 395,
"name": "LogTokensLocked",
"nodeType": "EventDefinition",
"parameters": {
"id": 394,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 379,
"indexed": false,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1190:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 378,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1190:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 381,
"indexed": false,
"mutability": "mutable",
"name": "token_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1218:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 380,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1218:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 383,
"indexed": false,
"mutability": "mutable",
"name": "token_decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1245:20:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 382,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "1245:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 385,
"indexed": true,
"mutability": "mutable",
"name": "token",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1275:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 384,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1275:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 387,
"indexed": true,
"mutability": "mutable",
"name": "sender",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1306:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 386,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1306:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 389,
"indexed": false,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1338:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 388,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1338:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 391,
"indexed": false,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1365:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 390,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "1365:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 393,
"indexed": false,
"mutability": "mutable",
"name": "nonce",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 395,
"src": "1389:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 392,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1389:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1180:227:1"
},
"src": "1159:249:1"
},
{
"constant": false,
"functionSelector": "42b0aefa",
"id": 399,
"mutability": "mutable",
"name": "guardian_sets",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "1467:51:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet)"
},
"typeName": {
"id": 398,
"keyType": {
"id": 396,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1475:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Mapping",
"src": "1467:30:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet)"
},
"valueType": {
"contractScope": null,
"id": 397,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 371,
"src": "1485:11:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "822d82b3",
"id": 401,
"mutability": "mutable",
"name": "guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "1559:32:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 400,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1559:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "4db47840",
"id": 403,
"mutability": "mutable",
"name": "guardian_set_expirity",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "1677:35:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 402,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "1677:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "a31fe409",
"id": 407,
"mutability": "mutable",
"name": "consumedVAAs",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "1758:44:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"typeName": {
"id": 406,
"keyType": {
"id": 404,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1766:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "1758:24:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
},
"valueType": {
"id": 405,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1777:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "b6694c2a",
"id": 411,
"mutability": "mutable",
"name": "wrappedAssets",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "1857:48:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
},
"typeName": {
"id": 410,
"keyType": {
"id": 408,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "1865:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Mapping",
"src": "1857:27:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
},
"valueType": {
"id": 409,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1876:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
},
"value": null,
"visibility": "public"
},
{
"constant": false,
"functionSelector": "1a2be4da",
"id": 415,
"mutability": "mutable",
"name": "isWrappedAsset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1254,
"src": "1911:46:1",
"stateVariable": true,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"typeName": {
"id": 414,
"keyType": {
"id": 412,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "1919:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Mapping",
"src": "1911:24:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
},
"valueType": {
"id": 413,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "1930:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
}
},
"value": null,
"visibility": "public"
},
{
"body": {
"id": 442,
"nodeType": "Block",
"src": "2085:239:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"id": 428,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 424,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 399,
"src": "2095:13:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 426,
"indexExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 425,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2109: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": "2095:16:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 427,
"name": "initial_guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 417,
"src": "2114:20:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"src": "2095:39:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"id": 429,
"nodeType": "ExpressionStatement",
"src": "2095:39:1"
},
{
"expression": {
"argumentTypes": null,
"id": 432,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 430,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 401,
"src": "2187:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "30",
"id": 431,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2208:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "2187:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 433,
"nodeType": "ExpressionStatement",
"src": "2187:22:1"
},
{
"expression": {
"argumentTypes": null,
"id": 436,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 434,
"name": "guardian_set_expirity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 403,
"src": "2219:21:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 435,
"name": "_guardian_set_expirity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 421,
"src": "2243:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "2219:46:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 437,
"nodeType": "ExpressionStatement",
"src": "2219:46:1"
},
{
"expression": {
"argumentTypes": null,
"id": 440,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 438,
"name": "wrappedAssetMaster",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 359,
"src": "2276:18:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 439,
"name": "wrapped_asset_master",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 419,
"src": "2297:20:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "2276:41:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 441,
"nodeType": "ExpressionStatement",
"src": "2276:41:1"
}
]
},
"documentation": null,
"id": 443,
"implemented": true,
"kind": "constructor",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 422,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 417,
"mutability": "mutable",
"name": "initial_guardian_set",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 443,
"src": "1976:39:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 416,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 371,
"src": "1976:11:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 419,
"mutability": "mutable",
"name": "wrapped_asset_master",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 443,
"src": "2017:28:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 418,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "2017:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 421,
"mutability": "mutable",
"name": "_guardian_set_expirity",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 443,
"src": "2047:29:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 420,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "2047:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "1975:102:1"
},
"returnParameters": {
"id": 423,
"nodeType": "ParameterList",
"parameters": [],
"src": "2085:0:1"
},
"scope": 1254,
"src": "1964:360:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 454,
"nodeType": "Block",
"src": "2410:42:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 450,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 399,
"src": "2427:13:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 452,
"indexExpression": {
"argumentTypes": null,
"id": 451,
"name": "idx",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 445,
"src": "2441:3:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "2427:18:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"functionReturnParameters": 449,
"id": 453,
"nodeType": "Return",
"src": "2420:25:1"
}
]
},
"documentation": null,
"functionSelector": "f951975a",
"id": 455,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "getGuardianSet",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 446,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 445,
"mutability": "mutable",
"name": "idx",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 455,
"src": "2354:10:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 444,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "2354:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2353:12:1"
},
"returnParameters": {
"id": 449,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 448,
"mutability": "mutable",
"name": "gs",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 455,
"src": "2387:21:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 447,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 371,
"src": "2387:11:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2386:23:1"
},
"scope": 1254,
"src": "2330:122:1",
"stateMutability": "view",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 692,
"nodeType": "Block",
"src": "2531:1801:1",
"statements": [
{
"assignments": [
463
],
"declarations": [
{
"constant": false,
"id": 463,
"mutability": "mutable",
"name": "version",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "2541:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 462,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "2541:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 468,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 466,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2569: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": 464,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "2557:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 465,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "2557: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": 467,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2557:14:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2541:30:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 472,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 470,
"name": "version",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 463,
"src": "2589:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 471,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2600:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "2589:12:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "5641412076657273696f6e20696e636f6d70617469626c65",
"id": 473,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2603: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": 469,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "2581:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 474,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2581:49:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 475,
"nodeType": "ExpressionStatement",
"src": "2581:49:1"
},
{
"assignments": [
477
],
"declarations": [
{
"constant": false,
"id": 477,
"mutability": "mutable",
"name": "vaa_guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "2687:29:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 476,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "2687:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 482,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "31",
"id": 480,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2732: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": 478,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "2719:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 479,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint32",
"nodeType": "MemberAccess",
"referencedDeclaration": 163,
"src": "2719: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": 481,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2719:15:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2687:47:1"
},
{
"assignments": [
484
],
"declarations": [
{
"constant": false,
"id": 484,
"mutability": "mutable",
"name": "len_signers",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "2745:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 483,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "2745:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 489,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "35",
"id": 487,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2779: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": 485,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "2767:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 486,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "2767: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": 488,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2767:14:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2745:36:1"
},
{
"assignments": [
491
],
"declarations": [
{
"constant": false,
"id": 491,
"mutability": "mutable",
"name": "offset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "2791:11:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 490,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "2791:4:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 497,
"initialValue": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 496,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "36",
"id": 492,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2805: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": 495,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3636",
"id": 493,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "2809:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_66_by_1",
"typeString": "int_const 66"
},
"value": "66"
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"id": 494,
"name": "len_signers",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 484,
"src": "2814:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2809:16:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2805:20:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2791:34:1"
},
{
"assignments": [
499
],
"declarations": [
{
"constant": false,
"id": 499,
"mutability": "mutable",
"name": "hash",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "2947:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 498,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "2947:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 510,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 503,
"name": "offset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 491,
"src": "2982:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 507,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 504,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "2990:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 505,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "2990:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"id": 506,
"name": "offset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 491,
"src": "3003:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "2990:19:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 501,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "2972:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 502,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "slice",
"nodeType": "MemberAccess",
"referencedDeclaration": 55,
"src": "2972: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": 508,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2972:38:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 500,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "2962:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 509,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "2962:49:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "2947:64:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 515,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "!",
"prefix": true,
"src": "3029:19:1",
"subExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 512,
"name": "consumedVAAs",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 407,
"src": "3030:12:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 514,
"indexExpression": {
"argumentTypes": null,
"id": 513,
"name": "hash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 499,
"src": "3043:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3030:18:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "5641412077617320616c7265616479206578656375746564",
"id": 516,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3050: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": 511,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3021:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 517,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3021:56:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 518,
"nodeType": "ExpressionStatement",
"src": "3021:56:1"
},
{
"assignments": [
520
],
"declarations": [
{
"constant": false,
"id": 520,
"mutability": "mutable",
"name": "guardian_set",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "3088:31:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 519,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 371,
"src": "3088:11:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 524,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 521,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 399,
"src": "3122:13:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 523,
"indexExpression": {
"argumentTypes": null,
"id": 522,
"name": "vaa_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 477,
"src": "3136:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3122:37:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3088:71:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"id": 535,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 529,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 526,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 520,
"src": "3177:12:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 527,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "expiration_time",
"nodeType": "MemberAccess",
"referencedDeclaration": 370,
"src": "3177:28:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 528,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3209:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "3177:33:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "BinaryOperation",
"operator": "||",
"rightExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 534,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 530,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 520,
"src": "3214:12:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 531,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "expiration_time",
"nodeType": "MemberAccess",
"referencedDeclaration": 370,
"src": "3214:28:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 532,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "3245:5:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 533,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "timestamp",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3245:15:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3214:46:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"src": "3177:83:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "677561726469616e20736574206861732065787069726564",
"id": 536,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3262: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": 525,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3169:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 537,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3169:120:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 538,
"nodeType": "ExpressionStatement",
"src": "3169:120:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 552,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 550,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 547,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 544,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 540,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 520,
"src": "3309:12:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 541,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "keys",
"nodeType": "MemberAccess",
"referencedDeclaration": 368,
"src": "3309:17:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 542,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3309:24:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "/",
"rightExpression": {
"argumentTypes": null,
"hexValue": "34",
"id": 543,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3336:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_4_by_1",
"typeString": "int_const 4"
},
"value": "4"
},
"src": "3309:28:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 545,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "3308:30:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "33",
"id": 546,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3341:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_3_by_1",
"typeString": "int_const 3"
},
"value": "3"
},
"src": "3308:34:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 548,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "3307:36:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "31",
"id": 549,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3346:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "1"
},
"src": "3307:40:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"id": 551,
"name": "len_signers",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 484,
"src": "3351:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3307:55:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "6e6f2071756f72756d",
"id": 553,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3364: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": 539,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3299:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 554,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3299:77:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 555,
"nodeType": "ExpressionStatement",
"src": "3299:77:1"
},
{
"body": {
"id": 629,
"nodeType": "Block",
"src": "3426:334:1",
"statements": [
{
"assignments": [
567
],
"declarations": [
{
"constant": false,
"id": 567,
"mutability": "mutable",
"name": "index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 629,
"src": "3440:11:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 566,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3440:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 576,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 574,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "36",
"id": 570,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3466: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": 573,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 571,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 557,
"src": "3470:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3636",
"id": 572,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3474:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_66_by_1",
"typeString": "int_const 66"
},
"value": "66"
},
"src": "3470:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3466:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 568,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "3454:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 569,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "3454: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": 575,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3454:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3440:37:1"
},
{
"assignments": [
578
],
"declarations": [
{
"constant": false,
"id": 578,
"mutability": "mutable",
"name": "r",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 629,
"src": "3491:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 577,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "3491:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 587,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 585,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "37",
"id": 581,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3517: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": 584,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 582,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 557,
"src": "3521:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3636",
"id": 583,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3525:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_66_by_1",
"typeString": "int_const 66"
},
"value": "66"
},
"src": "3521:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3517:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 579,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "3503:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 580,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toBytes32",
"nodeType": "MemberAccess",
"referencedDeclaration": 298,
"src": "3503: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": 586,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3503:25:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3491:37:1"
},
{
"assignments": [
589
],
"declarations": [
{
"constant": false,
"id": 589,
"mutability": "mutable",
"name": "s",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 629,
"src": "3542:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 588,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "3542:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 598,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 596,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3339",
"id": 592,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3568: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": 595,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 593,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 557,
"src": "3573:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3636",
"id": 594,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3577:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_66_by_1",
"typeString": "int_const 66"
},
"value": "66"
},
"src": "3573:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3568:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 590,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "3554:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 591,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toBytes32",
"nodeType": "MemberAccess",
"referencedDeclaration": 298,
"src": "3554: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": 597,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3554:26:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3542:38:1"
},
{
"assignments": [
600
],
"declarations": [
{
"constant": false,
"id": 600,
"mutability": "mutable",
"name": "v",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 629,
"src": "3594:7:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 599,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3594:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 609,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 607,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3731",
"id": 603,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3616: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": 606,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 604,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 557,
"src": "3621:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3636",
"id": 605,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3625:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_66_by_1",
"typeString": "int_const 66"
},
"value": "66"
},
"src": "3621:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3616:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 601,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "3604:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 602,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "3604: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": 608,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3604:24:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3594:34:1"
},
{
"expression": {
"argumentTypes": null,
"id": 612,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 610,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 600,
"src": "3642:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "+=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "3237",
"id": 611,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3647:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_27_by_1",
"typeString": "int_const 27"
},
"value": "27"
},
"src": "3642:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 613,
"nodeType": "ExpressionStatement",
"src": "3642:7:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 625,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 616,
"name": "hash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 499,
"src": "3681:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 617,
"name": "v",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 600,
"src": "3687:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 618,
"name": "r",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 578,
"src": "3690:1:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 619,
"name": "s",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 589,
"src": "3693: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": 615,
"name": "ecrecover",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -6,
"src": "3671: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": 620,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3671:24:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 621,
"name": "guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 520,
"src": "3699:12:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"id": 622,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"memberName": "keys",
"nodeType": "MemberAccess",
"referencedDeclaration": 368,
"src": "3699:17:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 624,
"indexExpression": {
"argumentTypes": null,
"id": 623,
"name": "index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 567,
"src": "3717:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "3699:24:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "3671:52:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "564141207369676e617475726520696e76616c6964",
"id": 626,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3725: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": 614,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3663:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 627,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3663:86:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 628,
"nodeType": "ExpressionStatement",
"src": "3663:86:1"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 562,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 560,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 557,
"src": "3404:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 561,
"name": "len_signers",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 484,
"src": "3408:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3404:15:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 630,
"initializationExpression": {
"assignments": [
557
],
"declarations": [
{
"constant": false,
"id": 557,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 630,
"src": "3392:6:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 556,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "3392:4:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 559,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 558,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3401:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "3392:10:1"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 564,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "3421:3:1",
"subExpression": {
"argumentTypes": null,
"id": 563,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 557,
"src": "3421:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 565,
"nodeType": "ExpressionStatement",
"src": "3421:3:1"
},
"nodeType": "ForStatement",
"src": "3387:373:1"
},
{
"assignments": [
632
],
"declarations": [
{
"constant": false,
"id": 632,
"mutability": "mutable",
"name": "action",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "3770:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 631,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "3770:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 639,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 637,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 635,
"name": "offset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 491,
"src": "3797:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "34",
"id": 636,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3806:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_4_by_1",
"typeString": "int_const 4"
},
"value": "4"
},
"src": "3797:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 633,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "3785:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 634,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "3785: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": 638,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3785:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3770:38:1"
},
{
"assignments": [
641
],
"declarations": [
{
"constant": false,
"id": 641,
"mutability": "mutable",
"name": "payload",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 692,
"src": "3818:20:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 640,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "3818:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 655,
"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": 491,
"src": "3851:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "35",
"id": 645,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3860:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_5_by_1",
"typeString": "int_const 5"
},
"value": "5"
},
"src": "3851:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 653,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 647,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "3863:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 648,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "length",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "3863:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"components": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 651,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 649,
"name": "offset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 491,
"src": "3877:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"hexValue": "35",
"id": 650,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3886:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_5_by_1",
"typeString": "int_const 5"
},
"value": "5"
},
"src": "3877:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"id": 652,
"isConstant": false,
"isInlineArray": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "TupleExpression",
"src": "3876:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "3863:25:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 642,
"name": "vaa",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 457,
"src": "3841:3:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes calldata"
}
},
"id": 643,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "slice",
"nodeType": "MemberAccess",
"referencedDeclaration": 55,
"src": "3841: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": 654,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3841:48:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "3818:71:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 658,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 656,
"name": "action",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 632,
"src": "3927:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30783031",
"id": 657,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "3937:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_1_by_1",
"typeString": "int_const 1"
},
"value": "0x01"
},
"src": "3927:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 673,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 671,
"name": "action",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 632,
"src": "4135:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30783130",
"id": 672,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4145:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_16_by_1",
"typeString": "int_const 16"
},
"value": "0x10"
},
"src": "4135:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 683,
"nodeType": "Block",
"src": "4202:53:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "696e76616c69642056414120616374696f6e",
"id": 680,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4223: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": 679,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
-19,
-19
],
"referencedDeclaration": -19,
"src": "4216:6:1",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 681,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4216:28:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 682,
"nodeType": "ExpressionStatement",
"src": "4216:28:1"
}
]
},
"id": 684,
"nodeType": "IfStatement",
"src": "4131:124:1",
"trueBody": {
"id": 678,
"nodeType": "Block",
"src": "4151:45:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 675,
"name": "payload",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 641,
"src": "4177:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 674,
"name": "vaaTransfer",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 927,
"src": "4165:11:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (bytes memory)"
}
},
"id": 676,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4165:20:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 677,
"nodeType": "ExpressionStatement",
"src": "4165:20:1"
}
]
}
},
"id": 685,
"nodeType": "IfStatement",
"src": "3923:332:1",
"trueBody": {
"id": 670,
"nodeType": "Block",
"src": "3943:182:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 662,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 660,
"name": "vaa_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 477,
"src": "3965:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 661,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 401,
"src": "3991:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "3965:44:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "6f6e6c79207468652063757272656e7420677561726469616e207365742063616e206368616e67652074686520677561726469616e20736574",
"id": 663,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4011: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": 659,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "3957:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 664,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "3957:114:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 665,
"nodeType": "ExpressionStatement",
"src": "3957:114:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 667,
"name": "payload",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 641,
"src": "4106:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 666,
"name": "vaaUpdateGuardianSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 792,
"src": "4085:20:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$__$",
"typeString": "function (bytes memory)"
}
},
"id": 668,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4085:29:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 669,
"nodeType": "ExpressionStatement",
"src": "4085:29:1"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"id": 690,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 686,
"name": "consumedVAAs",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 407,
"src": "4300:12:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_bool_$",
"typeString": "mapping(bytes32 => bool)"
}
},
"id": 688,
"indexExpression": {
"argumentTypes": null,
"id": 687,
"name": "hash",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 499,
"src": "4313:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4300:18:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 689,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4321:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "4300:25:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 691,
"nodeType": "ExpressionStatement",
"src": "4300:25:1"
}
]
},
"documentation": null,
"functionSelector": "3bc0aee6",
"id": 693,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 460,
"modifierName": {
"argumentTypes": null,
"id": 459,
"name": "nonReentrant",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3071,
"src": "2518:12:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "2518:12:1"
}
],
"name": "submitVAA",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 458,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 457,
"mutability": "mutable",
"name": "vaa",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 693,
"src": "2486:18:1",
"stateVariable": false,
"storageLocation": "calldata",
"typeDescriptions": {
"typeIdentifier": "t_bytes_calldata_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 456,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "2486:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "2476:34:1"
},
"returnParameters": {
"id": 461,
"nodeType": "ParameterList",
"parameters": [],
"src": "2531:0:1"
},
"scope": 1254,
"src": "2458:1874:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 791,
"nodeType": "Block",
"src": "4395:755:1",
"statements": [
{
"assignments": [
699
],
"declarations": [
{
"constant": false,
"id": 699,
"mutability": "mutable",
"name": "new_guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 791,
"src": "4405:29:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 698,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "4405:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 704,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 702,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4451: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": 700,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 695,
"src": "4437:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 701,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint32",
"nodeType": "MemberAccess",
"referencedDeclaration": 163,
"src": "4437: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": 703,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4437:16:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4405:48:1"
},
{
"assignments": [
706
],
"declarations": [
{
"constant": false,
"id": 706,
"mutability": "mutable",
"name": "len",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 791,
"src": "4463:9:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 705,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "4463:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 711,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "34",
"id": 709,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4488: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": 707,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 695,
"src": "4475:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 708,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "4475: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": 710,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4475:15:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4463:27:1"
},
{
"assignments": [
716
],
"declarations": [
{
"constant": false,
"id": 716,
"mutability": "mutable",
"name": "new_guardians",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 791,
"src": "4501:30:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[]"
},
"typeName": {
"baseType": {
"id": 714,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4501:7:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 715,
"length": null,
"nodeType": "ArrayTypeName",
"src": "4501:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 722,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 720,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 706,
"src": "4548:3:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 719,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "NewExpression",
"src": "4534: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": 717,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4538:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 718,
"length": null,
"nodeType": "ArrayTypeName",
"src": "4538:9:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
"typeString": "address[]"
}
}
},
"id": 721,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4534:18:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4501:51:1"
},
{
"body": {
"id": 750,
"nodeType": "Block",
"src": "4593:103:1",
"statements": [
{
"assignments": [
734
],
"declarations": [
{
"constant": false,
"id": 734,
"mutability": "mutable",
"name": "addr",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 750,
"src": "4607:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 733,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "4607:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 743,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 741,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "35",
"id": 737,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4637: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": 740,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 738,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 724,
"src": "4641:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "*",
"rightExpression": {
"argumentTypes": null,
"hexValue": "3230",
"id": 739,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4645:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_20_by_1",
"typeString": "int_const 20"
},
"value": "20"
},
"src": "4641:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "4637:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 735,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 695,
"src": "4622:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 736,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 82,
"src": "4622: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": 742,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4622:26:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4607:41:1"
},
{
"expression": {
"argumentTypes": null,
"id": 748,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 744,
"name": "new_guardians",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 716,
"src": "4662:13:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
"id": 746,
"indexExpression": {
"argumentTypes": null,
"id": 745,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 724,
"src": "4676:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4662:16:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 747,
"name": "addr",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 734,
"src": "4681:4:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "4662:23:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 749,
"nodeType": "ExpressionStatement",
"src": "4662:23:1"
}
]
},
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 729,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 727,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 724,
"src": "4579:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<",
"rightExpression": {
"argumentTypes": null,
"id": 728,
"name": "len",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 706,
"src": "4583:3:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "4579:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 751,
"initializationExpression": {
"assignments": [
724
],
"declarations": [
{
"constant": false,
"id": 724,
"mutability": "mutable",
"name": "i",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 751,
"src": "4567:6:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 723,
"name": "uint",
"nodeType": "ElementaryTypeName",
"src": "4567:4:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 726,
"initialValue": {
"argumentTypes": null,
"hexValue": "30",
"id": 725,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4576:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"nodeType": "VariableDeclarationStatement",
"src": "4567:10:1"
},
"loopExpression": {
"expression": {
"argumentTypes": null,
"id": 731,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"nodeType": "UnaryOperation",
"operator": "++",
"prefix": false,
"src": "4588:3:1",
"subExpression": {
"argumentTypes": null,
"id": 730,
"name": "i",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 724,
"src": "4588:1:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 732,
"nodeType": "ExpressionStatement",
"src": "4588:3:1"
},
"nodeType": "ForStatement",
"src": "4562:134:1"
},
{
"assignments": [
753
],
"declarations": [
{
"constant": false,
"id": 753,
"mutability": "mutable",
"name": "old_guardian_set_index",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 791,
"src": "4706:29:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 752,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "4706:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 755,
"initialValue": {
"argumentTypes": null,
"id": 754,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 401,
"src": "4738:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4706:50:1"
},
{
"expression": {
"argumentTypes": null,
"id": 758,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 756,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 401,
"src": "4766:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 757,
"name": "new_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 699,
"src": "4787:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "4766:43:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 759,
"nodeType": "ExpressionStatement",
"src": "4766:43:1"
},
{
"assignments": [
761
],
"declarations": [
{
"constant": false,
"id": 761,
"mutability": "mutable",
"name": "new_guardian_set",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 791,
"src": "4820:35:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet"
},
"typeName": {
"contractScope": null,
"id": 760,
"name": "GuardianSet",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 371,
"src": "4820:11:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage_ptr",
"typeString": "struct Wormhole.GuardianSet"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 766,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 763,
"name": "new_guardians",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 716,
"src": "4870:13:1",
"typeDescriptions": {
"typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
"typeString": "address[] memory"
}
},
{
"argumentTypes": null,
"hexValue": "30",
"id": 764,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "4885: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": 762,
"name": "GuardianSet",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 371,
"src": "4858:11:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_struct$_GuardianSet_$371_storage_ptr_$",
"typeString": "type(struct Wormhole.GuardianSet storage pointer)"
}
},
"id": 765,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "structConstructorCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "4858:29:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "4820:67:1"
},
{
"expression": {
"argumentTypes": null,
"id": 771,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 767,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 399,
"src": "4897:13:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 769,
"indexExpression": {
"argumentTypes": null,
"id": 768,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 401,
"src": "4911:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "4897:33:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 770,
"name": "new_guardian_set",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 761,
"src": "4933:16:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_memory_ptr",
"typeString": "struct Wormhole.GuardianSet memory"
}
},
"src": "4897:52:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"id": 772,
"nodeType": "ExpressionStatement",
"src": "4897:52:1"
},
{
"expression": {
"argumentTypes": null,
"id": 784,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 773,
"name": "guardian_sets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 399,
"src": "4959:13:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_uint32_$_t_struct$_GuardianSet_$371_storage_$",
"typeString": "mapping(uint32 => struct Wormhole.GuardianSet storage ref)"
}
},
"id": 775,
"indexExpression": {
"argumentTypes": null,
"id": 774,
"name": "old_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 753,
"src": "4973:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "4959:37:1",
"typeDescriptions": {
"typeIdentifier": "t_struct$_GuardianSet_$371_storage",
"typeString": "struct Wormhole.GuardianSet storage ref"
}
},
"id": 776,
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"memberName": "expiration_time",
"nodeType": "MemberAccess",
"referencedDeclaration": 370,
"src": "4959:53:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"id": 783,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 779,
"name": "block",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -4,
"src": "5022:5:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_block",
"typeString": "block"
}
},
"id": 780,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "timestamp",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5022:15:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 778,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "5015:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint32_$",
"typeString": "type(uint32)"
},
"typeName": {
"id": 777,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "5015:6:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 781,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5015:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"nodeType": "BinaryOperation",
"operator": "+",
"rightExpression": {
"argumentTypes": null,
"id": 782,
"name": "guardian_set_expirity",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 403,
"src": "5041:21:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "5015:47:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"src": "4959:103:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"id": 785,
"nodeType": "ExpressionStatement",
"src": "4959:103:1"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 787,
"name": "old_guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 753,
"src": "5100:22:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
{
"argumentTypes": null,
"id": 788,
"name": "guardian_set_index",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 401,
"src": "5124:18:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
{
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
],
"id": 786,
"name": "LogGuardianSetChanged",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 377,
"src": "5078:21:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint32_$_t_uint32_$returns$__$",
"typeString": "function (uint32,uint32)"
}
},
"id": 789,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5078:65:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 790,
"nodeType": "EmitStatement",
"src": "5073:70:1"
}
]
},
"documentation": null,
"id": 792,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "vaaUpdateGuardianSet",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 696,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 695,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 792,
"src": "4368:17:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 694,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "4368:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "4367:19:1"
},
"returnParameters": {
"id": 697,
"nodeType": "ParameterList",
"parameters": [],
"src": "4395:0:1"
},
"scope": 1254,
"src": "4338:812:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 926,
"nodeType": "Block",
"src": "5204:1399:1",
"statements": [
{
"assignments": [
798
],
"declarations": [
{
"constant": false,
"id": 798,
"mutability": "mutable",
"name": "source_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 926,
"src": "5257:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 797,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "5257:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 803,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "34",
"id": 801,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5291: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": 799,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "5278:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 800,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "5278: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": 802,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5278:15:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5257:36:1"
},
{
"assignments": [
805
],
"declarations": [
{
"constant": false,
"id": 805,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 926,
"src": "5304:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 804,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "5304:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 810,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "35",
"id": 808,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5338: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": 806,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "5325:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 807,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "5325: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": 809,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5325:15:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5304:36:1"
},
{
"assignments": [
812
],
"declarations": [
{
"constant": false,
"id": 812,
"mutability": "mutable",
"name": "target_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 926,
"src": "5459:22:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 811,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "5459:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 819,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_rational_50_by_1",
"typeString": "int_const 50"
},
"id": 817,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3338",
"id": 815,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5499: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": 816,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5504:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_12_by_1",
"typeString": "int_const 12"
},
"value": "12"
},
"src": "5499: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": 813,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "5484:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 814,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 82,
"src": "5484: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": 818,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5484:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5459:48:1"
},
{
"assignments": [
821
],
"declarations": [
{
"constant": false,
"id": 821,
"mutability": "mutable",
"name": "token_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 926,
"src": "5518:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 820,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "5518:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 826,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3730",
"id": 824,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5551: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": 822,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "5538:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 823,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "5538: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": 825,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5538:16:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5518:36:1"
},
{
"assignments": [
828
],
"declarations": [
{
"constant": false,
"id": 828,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 926,
"src": "5618:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 827,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "5618:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 833,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "313034",
"id": 831,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5650:3:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_104_by_1",
"typeString": "int_const 104"
},
"value": "104"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_rational_104_by_1",
"typeString": "int_const 104"
}
],
"expression": {
"argumentTypes": null,
"id": 829,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "5635:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 830,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint256",
"nodeType": "MemberAccess",
"referencedDeclaration": 271,
"src": "5635: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": 832,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5635:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5618:36:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 837,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 835,
"name": "source_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 798,
"src": "5673:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 836,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 805,
"src": "5689:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "5673:28:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "73616d6520636861696e207472616e736665727320617265206e6f7420737570706f72746564",
"id": 838,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5703: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": 834,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5665:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 839,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5665:79:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 840,
"nodeType": "ExpressionStatement",
"src": "5665:79:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 844,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 842,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 805,
"src": "5762:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"id": 843,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 362,
"src": "5778:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "5762:24:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "7472616e73666572206d75737420626520696e636f6d696e67",
"id": 845,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5788: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": 841,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "5754:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 846,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5754:62:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 847,
"nodeType": "ExpressionStatement",
"src": "5754:62:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 850,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 848,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 821,
"src": "5831:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"id": 849,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 362,
"src": "5846:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "5831:23:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 924,
"nodeType": "Block",
"src": "6452:145:1",
"statements": [
{
"assignments": [
908
],
"declarations": [
{
"constant": false,
"id": 908,
"mutability": "mutable",
"name": "token_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 924,
"src": "6466:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 907,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6466:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 915,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_rational_83_by_1",
"typeString": "int_const 83"
},
"id": 913,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3731",
"id": 911,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6505: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": 912,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6510:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_12_by_1",
"typeString": "int_const 12"
},
"value": "12"
},
"src": "6505: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": 909,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "6490:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 910,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 82,
"src": "6490: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": 914,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6490:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6466:47:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 920,
"name": "target_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 812,
"src": "6563:14:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 921,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 828,
"src": "6579: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": 917,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 908,
"src": "6535:13:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 916,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2615,
"src": "6528:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$",
"typeString": "type(contract IERC20)"
}
},
"id": 918,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6528:21:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2615",
"typeString": "contract IERC20"
}
},
"id": 919,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "safeTransfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 2649,
"src": "6528:34:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2615_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2615_$",
"typeString": "function (contract IERC20,address,uint256)"
}
},
"id": 922,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6528:58:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 923,
"nodeType": "ExpressionStatement",
"src": "6528:58:1"
}
]
},
"id": 925,
"nodeType": "IfStatement",
"src": "5827:770:1",
"trueBody": {
"id": 906,
"nodeType": "Block",
"src": "5856:590:1",
"statements": [
{
"assignments": [
852
],
"declarations": [
{
"constant": false,
"id": 852,
"mutability": "mutable",
"name": "token_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 906,
"src": "5870:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 851,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5870:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 857,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "3731",
"id": 855,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "5909: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": 853,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "5894:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 854,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toBytes32",
"nodeType": "MemberAccess",
"referencedDeclaration": 298,
"src": "5894: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": 856,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5894:18:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5870:42:1"
},
{
"assignments": [
859
],
"declarations": [
{
"constant": false,
"id": 859,
"mutability": "mutable",
"name": "asset_id",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 906,
"src": "5926:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 858,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "5926:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 867,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 863,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 821,
"src": "5972:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 864,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 852,
"src": "5985:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
],
"expression": {
"argumentTypes": null,
"id": 861,
"name": "abi",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -1,
"src": "5955:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_abi",
"typeString": "abi"
}
},
"id": 862,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"memberName": "encodePacked",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "5955:16:1",
"typeDescriptions": {
"typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
"typeString": "function () pure returns (bytes memory)"
}
},
"id": 865,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5955:44:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
],
"id": 860,
"name": "keccak256",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -8,
"src": "5945:9:1",
"typeDescriptions": {
"typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
"typeString": "function (bytes memory) pure returns (bytes32)"
}
},
"id": 866,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "5945:55:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "5926:74:1"
},
{
"assignments": [
869
],
"declarations": [
{
"constant": false,
"id": 869,
"mutability": "mutable",
"name": "wrapped_asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 906,
"src": "6092:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 868,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6092:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 873,
"initialValue": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 870,
"name": "wrappedAssets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 411,
"src": "6116:13:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
}
},
"id": 872,
"indexExpression": {
"argumentTypes": null,
"id": 871,
"name": "asset_id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 859,
"src": "6130:8:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "6116:23:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6092:47:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"id": 879,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 874,
"name": "wrapped_asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 869,
"src": "6157:13:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "BinaryOperation",
"operator": "==",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "30",
"id": 877,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6182: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": 876,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "6174:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 875,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6174:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 878,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6174:10:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
"src": "6157:27:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 897,
"nodeType": "IfStatement",
"src": "6153:212:1",
"trueBody": {
"id": 896,
"nodeType": "Block",
"src": "6186:179:1",
"statements": [
{
"assignments": [
881
],
"declarations": [
{
"constant": false,
"id": 881,
"mutability": "mutable",
"name": "asset_decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 896,
"src": "6204:20:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 880,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "6204:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 886,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "313033",
"id": 884,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "6240: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": 882,
"name": "data",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 794,
"src": "6227:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes memory"
}
},
"id": 883,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "toUint8",
"nodeType": "MemberAccess",
"referencedDeclaration": 109,
"src": "6227: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": 885,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6227:17:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6204:40:1"
},
{
"expression": {
"argumentTypes": null,
"id": 894,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 887,
"name": "wrapped_asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 869,
"src": "6262:13:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 889,
"name": "asset_id",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 859,
"src": "6297:8:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 890,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 821,
"src": "6307:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 891,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 852,
"src": "6320:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 892,
"name": "asset_decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 881,
"src": "6335:14:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 888,
"name": "deployWrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 970,
"src": "6278:18:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_uint8_$returns$_t_address_$",
"typeString": "function (bytes32,uint8,bytes32,uint8) returns (address)"
}
},
"id": 893,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6278:72:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "6262:88:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 895,
"nodeType": "ExpressionStatement",
"src": "6262:88:1"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 902,
"name": "target_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 812,
"src": "6412:14:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
{
"argumentTypes": null,
"id": 903,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 828,
"src": "6428: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": 899,
"name": "wrapped_asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 869,
"src": "6392:13:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 898,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1811,
"src": "6379:12:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 900,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6379:27:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1811",
"typeString": "contract WrappedAsset"
}
},
"id": 901,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "mint",
"nodeType": "MemberAccess",
"referencedDeclaration": 1349,
"src": "6379:32:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256) external"
}
},
"id": 904,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6379:56:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 905,
"nodeType": "ExpressionStatement",
"src": "6379:56:1"
}
]
}
}
]
},
"documentation": null,
"id": 927,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "vaaTransfer",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 795,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 794,
"mutability": "mutable",
"name": "data",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 927,
"src": "5177:17:1",
"stateVariable": false,
"storageLocation": "memory",
"typeDescriptions": {
"typeIdentifier": "t_bytes_memory_ptr",
"typeString": "bytes"
},
"typeName": {
"id": 793,
"name": "bytes",
"nodeType": "ElementaryTypeName",
"src": "5177:5:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes_storage_ptr",
"typeString": "bytes"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "5176:19:1"
},
"returnParameters": {
"id": 796,
"nodeType": "ParameterList",
"parameters": [],
"src": "5204:0:1"
},
"scope": 1254,
"src": "5156:1447:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 969,
"nodeType": "Block",
"src": "6740:808:1",
"statements": [
{
"assignments": [
941
],
"declarations": [
{
"constant": false,
"id": 941,
"mutability": "mutable",
"name": "targetBytes",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 969,
"src": "6918:19:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
},
"typeName": {
"id": 940,
"name": "bytes20",
"nodeType": "ElementaryTypeName",
"src": "6918:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 946,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 944,
"name": "wrappedAssetMaster",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 359,
"src": "6948:18:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 943,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "6940:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes20_$",
"typeString": "type(bytes20)"
},
"typeName": {
"id": 942,
"name": "bytes20",
"nodeType": "ElementaryTypeName",
"src": "6940:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 945,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "6940:27:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes20",
"typeString": "bytes20"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "6918:49:1"
},
{
"AST": {
"nodeType": "YulBlock",
"src": "6986:348:1",
"statements": [
{
"nodeType": "YulVariableDeclaration",
"src": "7000:24:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7019:4:1",
"type": "",
"value": "0x40"
}
],
"functionName": {
"name": "mload",
"nodeType": "YulIdentifier",
"src": "7013:5:1"
},
"nodeType": "YulFunctionCall",
"src": "7013:11:1"
},
"variables": [
{
"name": "clone",
"nodeType": "YulTypedName",
"src": "7004:5:1",
"type": ""
}
]
},
{
"expression": {
"arguments": [
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "7044:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7051:66:1",
"type": "",
"value": "0x3d602d80600a3d3981f3363d3d373d3d3d363d73000000000000000000000000"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7037:6:1"
},
"nodeType": "YulFunctionCall",
"src": "7037:81:1"
},
"nodeType": "YulExpressionStatement",
"src": "7037:81:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "7142:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7149:4:1",
"type": "",
"value": "0x14"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7138:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7138:16:1"
},
{
"name": "targetBytes",
"nodeType": "YulIdentifier",
"src": "7156:11:1"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7131:6:1"
},
"nodeType": "YulFunctionCall",
"src": "7131:37:1"
},
"nodeType": "YulExpressionStatement",
"src": "7131:37:1"
},
{
"expression": {
"arguments": [
{
"arguments": [
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "7192:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7199:4:1",
"type": "",
"value": "0x28"
}
],
"functionName": {
"name": "add",
"nodeType": "YulIdentifier",
"src": "7188:3:1"
},
"nodeType": "YulFunctionCall",
"src": "7188:16:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7206:66:1",
"type": "",
"value": "0x5af43d82803e903d91602b57fd5bf30000000000000000000000000000000000"
}
],
"functionName": {
"name": "mstore",
"nodeType": "YulIdentifier",
"src": "7181:6:1"
},
"nodeType": "YulFunctionCall",
"src": "7181:92:1"
},
"nodeType": "YulExpressionStatement",
"src": "7181:92:1"
},
{
"nodeType": "YulAssignment",
"src": "7286:38:1",
"value": {
"arguments": [
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7303:1:1",
"type": "",
"value": "0"
},
{
"name": "clone",
"nodeType": "YulIdentifier",
"src": "7306:5:1"
},
{
"kind": "number",
"nodeType": "YulLiteral",
"src": "7313:4:1",
"type": "",
"value": "0x37"
},
{
"name": "seed",
"nodeType": "YulIdentifier",
"src": "7319:4:1"
}
],
"functionName": {
"name": "create2",
"nodeType": "YulIdentifier",
"src": "7295:7:1"
},
"nodeType": "YulFunctionCall",
"src": "7295:29:1"
},
"variableNames": [
{
"name": "asset",
"nodeType": "YulIdentifier",
"src": "7286:5:1"
}
]
}
]
},
"evmVersion": "istanbul",
"externalReferences": [
{
"declaration": 938,
"isOffset": false,
"isSlot": false,
"src": "7286:5:1",
"valueSize": 1
},
{
"declaration": 929,
"isOffset": false,
"isSlot": false,
"src": "7319:4:1",
"valueSize": 1
},
{
"declaration": 941,
"isOffset": false,
"isSlot": false,
"src": "7156:11:1",
"valueSize": 1
}
],
"id": 947,
"nodeType": "InlineAssembly",
"src": "6977:357:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 952,
"name": "token_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 931,
"src": "7403:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 953,
"name": "token_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 933,
"src": "7416:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 954,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 935,
"src": "7431:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 949,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "7385:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 948,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1811,
"src": "7372:12:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 950,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7372:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1811",
"typeString": "contract WrappedAsset"
}
},
"id": 951,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "initialize",
"nodeType": "MemberAccess",
"referencedDeclaration": 1328,
"src": "7372:30:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_uint8_$_t_bytes32_$_t_uint8_$returns$__$",
"typeString": "function (uint8,bytes32,uint8) external"
}
},
"id": 955,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7372:68:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 956,
"nodeType": "ExpressionStatement",
"src": "7372:68:1"
},
{
"expression": {
"argumentTypes": null,
"id": 961,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 957,
"name": "wrappedAssets",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 411,
"src": "7476:13:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
"typeString": "mapping(bytes32 => address)"
}
},
"id": 959,
"indexExpression": {
"argumentTypes": null,
"id": 958,
"name": "seed",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 929,
"src": "7490:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7476:19:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"id": 960,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "7498:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"src": "7476:27:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"id": 962,
"nodeType": "ExpressionStatement",
"src": "7476:27:1"
},
{
"expression": {
"argumentTypes": null,
"id": 967,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 963,
"name": "isWrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 415,
"src": "7513:14:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 965,
"indexExpression": {
"argumentTypes": null,
"id": 964,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 938,
"src": "7528:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": true,
"nodeType": "IndexAccess",
"src": "7513:21:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "74727565",
"id": 966,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "bool",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7537:4:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"value": "true"
},
"src": "7513:28:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 968,
"nodeType": "ExpressionStatement",
"src": "7513:28:1"
}
]
},
"documentation": null,
"id": 970,
"implemented": true,
"kind": "function",
"modifiers": [],
"name": "deployWrappedAsset",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 936,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 929,
"mutability": "mutable",
"name": "seed",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 970,
"src": "6637:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 928,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "6637:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 931,
"mutability": "mutable",
"name": "token_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 970,
"src": "6651:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 930,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "6651:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 933,
"mutability": "mutable",
"name": "token_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 970,
"src": "6670:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 932,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "6670:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 935,
"mutability": "mutable",
"name": "decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 970,
"src": "6693:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 934,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "6693:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6636:72:1"
},
"returnParameters": {
"id": 939,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 938,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 970,
"src": "6726:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 937,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "6726:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "6725:15:1"
},
"scope": 1254,
"src": "6609:939:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "private"
},
{
"body": {
"id": 1182,
"nodeType": "Block",
"src": "7750:1642:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 990,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 988,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "7768:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 989,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7778:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "7768:11:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "616d6f756e74206d757374206e6f742062652030",
"id": 991,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "7781: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": 987,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "7760:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 992,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7760:44:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 993,
"nodeType": "ExpressionStatement",
"src": "7760:44:1"
},
{
"assignments": [
995
],
"declarations": [
{
"constant": false,
"id": 995,
"mutability": "mutable",
"name": "asset_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1182,
"src": "7815:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 994,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "7815:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 997,
"initialValue": {
"argumentTypes": null,
"id": 996,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 362,
"src": "7835:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7815:28:1"
},
{
"assignments": [
999
],
"declarations": [
{
"constant": false,
"id": 999,
"mutability": "mutable",
"name": "asset_address",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1182,
"src": "7853:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 998,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "7853:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1000,
"initialValue": null,
"nodeType": "VariableDeclarationStatement",
"src": "7853:21:1"
},
{
"assignments": [
1002
],
"declarations": [
{
"constant": false,
"id": 1002,
"mutability": "mutable",
"name": "decimals",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1182,
"src": "7884:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1001,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "7884:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1008,
"initialValue": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1004,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "7907:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1003,
"name": "ERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2537,
"src": "7901:5:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$",
"typeString": "type(contract ERC20)"
}
},
"id": 1005,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7901:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$2537",
"typeString": "contract ERC20"
}
},
"id": 1006,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "decimals",
"nodeType": "MemberAccess",
"referencedDeclaration": 2113,
"src": "7901:21:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
"typeString": "function () view external returns (uint8)"
}
},
"id": 1007,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7901:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "7884:40:1"
},
{
"condition": {
"argumentTypes": null,
"baseExpression": {
"argumentTypes": null,
"id": 1009,
"name": "isWrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 415,
"src": "7939:14:1",
"typeDescriptions": {
"typeIdentifier": "t_mapping$_t_address_$_t_bool_$",
"typeString": "mapping(address => bool)"
}
},
"id": 1011,
"indexExpression": {
"argumentTypes": null,
"id": 1010,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "7954:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"isConstant": false,
"isLValue": true,
"isPure": false,
"lValueRequested": false,
"nodeType": "IndexAccess",
"src": "7939:21:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": {
"id": 1162,
"nodeType": "Block",
"src": "8161:1086:1",
"statements": [
{
"assignments": [
1039
],
"declarations": [
{
"constant": false,
"id": 1039,
"mutability": "mutable",
"name": "balanceBefore",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1162,
"src": "8175:21:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1038,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8175:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1049,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1046,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "8231:4:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Wormhole_$1254",
"typeString": "contract Wormhole"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Wormhole_$1254",
"typeString": "contract Wormhole"
}
],
"id": 1045,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8223:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1044,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8223:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1047,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8223: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": 1041,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "8206:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1040,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2615,
"src": "8199:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$",
"typeString": "type(contract IERC20)"
}
},
"id": 1042,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8199:13:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2615",
"typeString": "contract IERC20"
}
},
"id": 1043,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 2554,
"src": "8199:23:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 1048,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8199:38:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8175:62:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1054,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8282:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1055,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8282:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1058,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "8302:4:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Wormhole_$1254",
"typeString": "contract Wormhole"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Wormhole_$1254",
"typeString": "contract Wormhole"
}
],
"id": 1057,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8294:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1056,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8294:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1059,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8294:13:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 1060,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "8309: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": 1051,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "8258:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1050,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2615,
"src": "8251:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$",
"typeString": "type(contract IERC20)"
}
},
"id": 1052,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8251:13:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2615",
"typeString": "contract IERC20"
}
},
"id": 1053,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "safeTransferFrom",
"nodeType": "MemberAccess",
"referencedDeclaration": 2674,
"src": "8251:30:1",
"typeDescriptions": {
"typeIdentifier": "t_function_internal_nonpayable$_t_contract$_IERC20_$2615_$_t_address_$_t_address_$_t_uint256_$returns$__$bound_to$_t_contract$_IERC20_$2615_$",
"typeString": "function (contract IERC20,address,address,uint256)"
}
},
"id": 1061,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8251:65:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1062,
"nodeType": "ExpressionStatement",
"src": "8251:65:1"
},
{
"assignments": [
1064
],
"declarations": [
{
"constant": false,
"id": 1064,
"mutability": "mutable",
"name": "balanceAfter",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1162,
"src": "8330:20:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1063,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8330:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1074,
"initialValue": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1071,
"name": "this",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -28,
"src": "8385:4:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_Wormhole_$1254",
"typeString": "contract Wormhole"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_contract$_Wormhole_$1254",
"typeString": "contract Wormhole"
}
],
"id": 1070,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8377:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_address_$",
"typeString": "type(address)"
},
"typeName": {
"id": 1069,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "8377:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1072,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8377: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": 1066,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "8360:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1065,
"name": "IERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2615,
"src": "8353:6:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_IERC20_$2615_$",
"typeString": "type(contract IERC20)"
}
},
"id": 1067,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8353:13:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2615",
"typeString": "contract IERC20"
}
},
"id": 1068,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "balanceOf",
"nodeType": "MemberAccess",
"referencedDeclaration": 2554,
"src": "8353:23:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
"typeString": "function (address) view external returns (uint256)"
}
},
"id": 1073,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8353:38:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8330:61:1"
},
{
"expression": {
"argumentTypes": null,
"id": 1080,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1075,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "8596:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1078,
"name": "balanceBefore",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1039,
"src": "8622:13:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 1076,
"name": "balanceAfter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1064,
"src": "8605:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1077,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sub",
"nodeType": "MemberAccess",
"referencedDeclaration": 1880,
"src": "8605: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": 1079,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8605:31:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8596:40:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1081,
"nodeType": "ExpressionStatement",
"src": "8596:40:1"
},
{
"condition": {
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1084,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1082,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1002,
"src": "8711:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": ">",
"rightExpression": {
"argumentTypes": null,
"hexValue": "39",
"id": 1083,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8722:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_9_by_1",
"typeString": "int_const 9"
},
"value": "9"
},
"src": "8711:12:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1130,
"nodeType": "IfStatement",
"src": "8707:339:1",
"trueBody": {
"id": 1129,
"nodeType": "Block",
"src": "8725:321:1",
"statements": [
{
"assignments": [
1086
],
"declarations": [
{
"constant": false,
"id": 1086,
"mutability": "mutable",
"name": "original_amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1129,
"src": "8743:23:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1085,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8743:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"id": 1088,
"initialValue": {
"argumentTypes": null,
"id": 1087,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "8769:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "VariableDeclarationStatement",
"src": "8743:32:1"
},
{
"expression": {
"argumentTypes": null,
"id": 1101,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1089,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "8793:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1099,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3130",
"id": 1092,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8813:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1097,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1095,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1002,
"src": "8827:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "39",
"id": 1096,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8838:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_9_by_1",
"typeString": "int_const 9"
},
"value": "9"
},
"src": "8827:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1094,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8819:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1093,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8819:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1098,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8819:21:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8813:27:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 1090,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "8802:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1091,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "div",
"nodeType": "MemberAccess",
"referencedDeclaration": 1960,
"src": "8802:10: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": 1100,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8802:39:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8793:48:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1102,
"nodeType": "ExpressionStatement",
"src": "8793:48:1"
},
{
"condition": {
"argumentTypes": null,
"id": 1103,
"name": "refund_dust",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 982,
"src": "8864:11:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"falseBody": null,
"id": 1124,
"nodeType": "IfStatement",
"src": "8860:141:1",
"trueBody": {
"id": 1123,
"nodeType": "Block",
"src": "8877:124:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1108,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8921:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1109,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8921:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1119,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3130",
"id": 1112,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8953:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1117,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"id": 1115,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1002,
"src": "8967:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "39",
"id": 1116,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "8978:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_9_by_1",
"typeString": "int_const 9"
},
"value": "9"
},
"src": "8967:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1114,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "8959:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1113,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "8959:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1118,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8959:21:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "8953:27:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 1110,
"name": "original_amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1086,
"src": "8933:15:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1111,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "mod",
"nodeType": "MemberAccess",
"referencedDeclaration": 2005,
"src": "8933:19: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": 1120,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8933:48:1",
"tryCall": false,
"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": 1105,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "8905:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1104,
"name": "ERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2537,
"src": "8899:5:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$",
"typeString": "type(contract ERC20)"
}
},
"id": 1106,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8899:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$2537",
"typeString": "contract ERC20"
}
},
"id": 1107,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "transfer",
"nodeType": "MemberAccess",
"referencedDeclaration": 2158,
"src": "8899:21:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
"typeString": "function (address,uint256) external returns (bool)"
}
},
"id": 1121,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8899:83:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"id": 1122,
"nodeType": "ExpressionStatement",
"src": "8899:83:1"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"id": 1127,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1125,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1002,
"src": "9019:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"hexValue": "39",
"id": 1126,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9030:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_9_by_1",
"typeString": "int_const 9"
},
"value": "9"
},
"src": "9019:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1128,
"nodeType": "ExpressionStatement",
"src": "9019:12:1"
}
]
}
},
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1148,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1145,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"hexValue": "3130",
"id": 1134,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9085:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_10_by_1",
"typeString": "int_const 10"
},
"value": "10"
},
"nodeType": "BinaryOperation",
"operator": "**",
"rightExpression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"id": 1143,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1138,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "9105:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1137,
"name": "ERC20",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 2537,
"src": "9099:5:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_ERC20_$2537_$",
"typeString": "type(contract ERC20)"
}
},
"id": 1139,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9099:12:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_ERC20_$2537",
"typeString": "contract ERC20"
}
},
"id": 1140,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "decimals",
"nodeType": "MemberAccess",
"referencedDeclaration": 2113,
"src": "9099:21:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
"typeString": "function () view external returns (uint8)"
}
},
"id": 1141,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9099:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "BinaryOperation",
"operator": "-",
"rightExpression": {
"argumentTypes": null,
"hexValue": "39",
"id": 1142,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9125:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_9_by_1",
"typeString": "int_const 9"
},
"value": "9"
},
"src": "9099:27:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
],
"id": 1136,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9091:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1135,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9091:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1144,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9091:36:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"src": "9085:42:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"expression": {
"argumentTypes": null,
"id": 1132,
"name": "balanceAfter",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1064,
"src": "9068:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"id": 1133,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "div",
"nodeType": "MemberAccess",
"referencedDeclaration": 1960,
"src": "9068: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": 1146,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9068:60:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "<=",
"rightExpression": {
"argumentTypes": null,
"id": 1147,
"name": "MAX_UINT64",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 357,
"src": "9132:10:1",
"typeDescriptions": {
"typeIdentifier": "t_uint64",
"typeString": "uint64"
}
},
"src": "9068:74:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "6272696467652062616c616e636520776f756c6420657863656564206d6178696d756d",
"id": 1149,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9144:37:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4",
"typeString": "literal_string \"bridge balance would exceed maximum\""
},
"value": "bridge balance would exceed maximum"
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_bool",
"typeString": "bool"
},
{
"typeIdentifier": "t_stringliteral_173119466b5178b8ca47cb473e247f7a9a678958b1d751b4cef80e7a8162cdd4",
"typeString": "literal_string \"bridge balance would exceed maximum\""
}
],
"id": 1131,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "9060:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1150,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9060:122:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1151,
"nodeType": "ExpressionStatement",
"src": "9060:122:1"
},
{
"expression": {
"argumentTypes": null,
"id": 1160,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1152,
"name": "asset_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 999,
"src": "9197:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1157,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "9229:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1156,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9221:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1155,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9221:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1158,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9221:14:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1154,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9213:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1153,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9213:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1159,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9213:23:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"src": "9197:39:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1161,
"nodeType": "ExpressionStatement",
"src": "9197:39:1"
}
]
},
"id": 1163,
"nodeType": "IfStatement",
"src": "7935:1312:1",
"trueBody": {
"id": 1037,
"nodeType": "Block",
"src": "7962:193:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1016,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "8001:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1017,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "8001:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
},
{
"argumentTypes": null,
"id": 1018,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "8013: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": 1013,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "7989:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1012,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1811,
"src": "7976:12:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 1014,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7976:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1811",
"typeString": "contract WrappedAsset"
}
},
"id": 1015,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "burn",
"nodeType": "MemberAccess",
"referencedDeclaration": 1370,
"src": "7976:24:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
"typeString": "function (address,uint256) external"
}
},
"id": 1019,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "7976:44:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1020,
"nodeType": "ExpressionStatement",
"src": "7976:44:1"
},
{
"expression": {
"argumentTypes": null,
"id": 1027,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1021,
"name": "asset_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 995,
"src": "8034:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1023,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "8061:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1022,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1811,
"src": "8048:12:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 1024,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8048:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1811",
"typeString": "contract WrappedAsset"
}
},
"id": 1025,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "assetChain",
"nodeType": "MemberAccess",
"referencedDeclaration": 1277,
"src": "8048:30:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_uint8_$",
"typeString": "function () view external returns (uint8)"
}
},
"id": 1026,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8048:32:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"src": "8034:46:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"id": 1028,
"nodeType": "ExpressionStatement",
"src": "8034:46:1"
},
{
"expression": {
"argumentTypes": null,
"id": 1035,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftHandSide": {
"argumentTypes": null,
"id": 1029,
"name": "asset_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 999,
"src": "8094:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"nodeType": "Assignment",
"operator": "=",
"rightHandSide": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1031,
"name": "asset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 972,
"src": "8123:5:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1030,
"name": "WrappedAsset",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1811,
"src": "8110:12:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WrappedAsset_$1811_$",
"typeString": "type(contract WrappedAsset)"
}
},
"id": 1032,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8110:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WrappedAsset_$1811",
"typeString": "contract WrappedAsset"
}
},
"id": 1033,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "assetAddress",
"nodeType": "MemberAccess",
"referencedDeclaration": 1279,
"src": "8110:32:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_view$__$returns$_t_bytes32_$",
"typeString": "function () view external returns (bytes32)"
}
},
"id": 1034,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "8110:34:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"src": "8094:50:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"id": 1036,
"nodeType": "ExpressionStatement",
"src": "8094:50:1"
}
]
}
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1165,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 978,
"src": "9278:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 1166,
"name": "asset_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 995,
"src": "9292:11:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 1167,
"name": "decimals",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1002,
"src": "9305:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 1168,
"name": "asset_address",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 999,
"src": "9315:13:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1173,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "9346:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1174,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9346:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 1172,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9338:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1171,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9338:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1175,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9338:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1170,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9330:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1169,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9330:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1176,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9330:28:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 1177,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 976,
"src": "9360:9:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 1178,
"name": "amount",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 974,
"src": "9371:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 1179,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 980,
"src": "9379:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"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": 1164,
"name": "LogTokensLocked",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 395,
"src": "9262:15:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$",
"typeString": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)"
}
},
"id": 1180,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9262:123:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1181,
"nodeType": "EmitStatement",
"src": "9257:128:1"
}
]
},
"documentation": null,
"functionSelector": "70713960",
"id": 1183,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 985,
"modifierName": {
"argumentTypes": null,
"id": 984,
"name": "nonReentrant",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3071,
"src": "7737:12:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "7737:12:1"
}
],
"name": "lockAssets",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 983,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 972,
"mutability": "mutable",
"name": "asset",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1183,
"src": "7583:13:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
},
"typeName": {
"id": 971,
"name": "address",
"nodeType": "ElementaryTypeName",
"src": "7583:7:1",
"stateMutability": "nonpayable",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 974,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1183,
"src": "7606:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 973,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "7606:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 976,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1183,
"src": "7630:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 975,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "7630:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 978,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1183,
"src": "7657:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 977,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "7657:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 980,
"mutability": "mutable",
"name": "nonce",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1183,
"src": "7685:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 979,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "7685:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 982,
"mutability": "mutable",
"name": "refund_dust",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1183,
"src": "7707:16:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
},
"typeName": {
"id": 981,
"name": "bool",
"nodeType": "ElementaryTypeName",
"src": "7707:4:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "7573:156:1"
},
"returnParameters": {
"id": 986,
"nodeType": "ParameterList",
"parameters": [],
"src": "7750:0:1"
},
"scope": 1254,
"src": "7554:1838:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1236,
"nodeType": "Block",
"src": "9526:334:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"commonType": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"id": 1198,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"leftExpression": {
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1195,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "9544:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1196,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9544:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"nodeType": "BinaryOperation",
"operator": "!=",
"rightExpression": {
"argumentTypes": null,
"hexValue": "30",
"id": 1197,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9557:1:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_0_by_1",
"typeString": "int_const 0"
},
"value": "0"
},
"src": "9544:14:1",
"typeDescriptions": {
"typeIdentifier": "t_bool",
"typeString": "bool"
}
},
{
"argumentTypes": null,
"hexValue": "616d6f756e74206d757374206e6f742062652030",
"id": 1199,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9560: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": 1194,
"name": "require",
"nodeType": "Identifier",
"overloadedDeclarations": [
-18,
-18
],
"referencedDeclaration": -18,
"src": "9536:7:1",
"typeDescriptions": {
"typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
"typeString": "function (bool,string memory) pure"
}
},
"id": 1200,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9536:47:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1201,
"nodeType": "ExpressionStatement",
"src": "9536:47:1"
},
{
"expression": {
"argumentTypes": null,
"arguments": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": [],
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1203,
"name": "WETHAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 365,
"src": "9632:11:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1202,
"name": "WETH",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1265,
"src": "9627:4:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_contract$_WETH_$1265_$",
"typeString": "type(contract WETH)"
}
},
"id": 1204,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9627:17:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_contract$_WETH_$1265",
"typeString": "contract WETH"
}
},
"id": 1205,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "deposit",
"nodeType": "MemberAccess",
"referencedDeclaration": 1259,
"src": "9627:25:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$__$returns$__$",
"typeString": "function () payable external"
}
},
"id": 1208,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"names": [
"value"
],
"nodeType": "FunctionCallOptions",
"options": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1206,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "9661:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1207,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9661:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"src": "9627:44:1",
"typeDescriptions": {
"typeIdentifier": "t_function_external_payable$__$returns$__$value",
"typeString": "function () payable external"
}
},
"id": 1209,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9627:46:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1210,
"nodeType": "ExpressionStatement",
"src": "9627:46:1"
},
{
"eventCall": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1212,
"name": "target_chain",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1187,
"src": "9736:12:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"id": 1213,
"name": "CHAIN_ID",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 362,
"src": "9750:8:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
{
"argumentTypes": null,
"hexValue": "3138",
"id": 1214,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "number",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9760:2:1",
"subdenomination": null,
"typeDescriptions": {
"typeIdentifier": "t_rational_18_by_1",
"typeString": "int_const 18"
},
"value": "18"
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"id": 1219,
"name": "WETHAddress",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 365,
"src": "9780:11:1",
"typeDescriptions": {
"typeIdentifier": "t_address",
"typeString": "address"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address",
"typeString": "address"
}
],
"id": 1218,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9772:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1217,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9772:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1220,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9772:20:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1216,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9764:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1215,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9764:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1221,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9764:29:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1226,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "9811:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1227,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "sender",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9811:10:1",
"typeDescriptions": {
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_address_payable",
"typeString": "address payable"
}
],
"id": 1225,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9803:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_uint256_$",
"typeString": "type(uint256)"
},
"typeName": {
"id": 1224,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "9803:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1228,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9803:19:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
],
"id": 1223,
"isConstant": false,
"isLValue": false,
"isPure": true,
"lValueRequested": false,
"nodeType": "ElementaryTypeNameExpression",
"src": "9795:7:1",
"typeDescriptions": {
"typeIdentifier": "t_type$_t_bytes32_$",
"typeString": "type(bytes32)"
},
"typeName": {
"id": 1222,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9795:7:1",
"typeDescriptions": {
"typeIdentifier": null,
"typeString": null
}
}
},
"id": 1229,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "typeConversion",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9795:28:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"id": 1230,
"name": "recipient",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1185,
"src": "9825:9:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
{
"argumentTypes": null,
"expression": {
"argumentTypes": null,
"id": 1231,
"name": "msg",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": -15,
"src": "9836:3:1",
"typeDescriptions": {
"typeIdentifier": "t_magic_message",
"typeString": "msg"
}
},
"id": 1232,
"isConstant": false,
"isLValue": false,
"isPure": false,
"lValueRequested": false,
"memberName": "value",
"nodeType": "MemberAccess",
"referencedDeclaration": null,
"src": "9836:9:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
{
"argumentTypes": null,
"id": 1233,
"name": "nonce",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 1189,
"src": "9847:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
}
],
"expression": {
"argumentTypes": [
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
{
"typeIdentifier": "t_rational_18_by_1",
"typeString": "int_const 18"
},
{
"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": 1211,
"name": "LogTokensLocked",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 395,
"src": "9720:15:1",
"typeDescriptions": {
"typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint8_$_t_uint8_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$_t_uint32_$returns$__$",
"typeString": "function (uint8,uint8,uint8,bytes32,bytes32,bytes32,uint256,uint32)"
}
},
"id": 1234,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9720:133:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1235,
"nodeType": "EmitStatement",
"src": "9715:138:1"
}
]
},
"documentation": null,
"functionSelector": "58d62e46",
"id": 1237,
"implemented": true,
"kind": "function",
"modifiers": [
{
"arguments": null,
"id": 1192,
"modifierName": {
"argumentTypes": null,
"id": 1191,
"name": "nonReentrant",
"nodeType": "Identifier",
"overloadedDeclarations": [],
"referencedDeclaration": 3071,
"src": "9513:12:1",
"typeDescriptions": {
"typeIdentifier": "t_modifier$__$",
"typeString": "modifier ()"
}
},
"nodeType": "ModifierInvocation",
"src": "9513:12:1"
}
],
"name": "lockETH",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1190,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1185,
"mutability": "mutable",
"name": "recipient",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1237,
"src": "9424:17:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
},
"typeName": {
"id": 1184,
"name": "bytes32",
"nodeType": "ElementaryTypeName",
"src": "9424:7:1",
"typeDescriptions": {
"typeIdentifier": "t_bytes32",
"typeString": "bytes32"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1187,
"mutability": "mutable",
"name": "target_chain",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1237,
"src": "9451:18:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
},
"typeName": {
"id": 1186,
"name": "uint8",
"nodeType": "ElementaryTypeName",
"src": "9451:5:1",
"typeDescriptions": {
"typeIdentifier": "t_uint8",
"typeString": "uint8"
}
},
"value": null,
"visibility": "internal"
},
{
"constant": false,
"id": 1189,
"mutability": "mutable",
"name": "nonce",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1237,
"src": "9479:12:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
},
"typeName": {
"id": 1188,
"name": "uint32",
"nodeType": "ElementaryTypeName",
"src": "9479:6:1",
"typeDescriptions": {
"typeIdentifier": "t_uint32",
"typeString": "uint32"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "9414:83:1"
},
"returnParameters": {
"id": 1193,
"nodeType": "ParameterList",
"parameters": [],
"src": "9526:0:1"
},
"scope": 1254,
"src": "9398:462:1",
"stateMutability": "payable",
"virtual": false,
"visibility": "public"
},
{
"body": {
"id": 1244,
"nodeType": "Block",
"src": "9894:57:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61",
"id": 1241,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9902: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": 1240,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
-19,
-19
],
"referencedDeclaration": -19,
"src": "9895:6:1",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 1242,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9895:54:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1243,
"nodeType": "ExpressionStatement",
"src": "9895:54:1"
}
]
},
"documentation": null,
"id": 1245,
"implemented": true,
"kind": "fallback",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1238,
"nodeType": "ParameterList",
"parameters": [],
"src": "9874:2:1"
},
"returnParameters": {
"id": 1239,
"nodeType": "ParameterList",
"parameters": [],
"src": "9894:0:1"
},
"scope": 1254,
"src": "9866:85:1",
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
},
{
"body": {
"id": 1252,
"nodeType": "Block",
"src": "9984:57:1",
"statements": [
{
"expression": {
"argumentTypes": null,
"arguments": [
{
"argumentTypes": null,
"hexValue": "706c6561736520757365206c6f636b45544820746f207472616e736665722045544820746f20536f6c616e61",
"id": 1249,
"isConstant": false,
"isLValue": false,
"isPure": true,
"kind": "string",
"lValueRequested": false,
"nodeType": "Literal",
"src": "9992: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": 1248,
"name": "revert",
"nodeType": "Identifier",
"overloadedDeclarations": [
-19,
-19
],
"referencedDeclaration": -19,
"src": "9985:6:1",
"typeDescriptions": {
"typeIdentifier": "t_function_revert_pure$_t_string_memory_ptr_$returns$__$",
"typeString": "function (string memory) pure"
}
},
"id": 1250,
"isConstant": false,
"isLValue": false,
"isPure": false,
"kind": "functionCall",
"lValueRequested": false,
"names": [],
"nodeType": "FunctionCall",
"src": "9985:54:1",
"tryCall": false,
"typeDescriptions": {
"typeIdentifier": "t_tuple$__$",
"typeString": "tuple()"
}
},
"id": 1251,
"nodeType": "ExpressionStatement",
"src": "9985:54:1"
}
]
},
"documentation": null,
"id": 1253,
"implemented": true,
"kind": "receive",
"modifiers": [],
"name": "",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1246,
"nodeType": "ParameterList",
"parameters": [],
"src": "9964:2:1"
},
"returnParameters": {
"id": 1247,
"nodeType": "ParameterList",
"parameters": [],
"src": "9984:0:1"
},
"scope": 1254,
"src": "9957:84:1",
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
}
],
"scope": 1266,
"src": "502:9541:1"
},
{
"abstract": false,
"baseContracts": [
{
"arguments": null,
"baseName": {
"contractScope": null,
"id": 1255,
"name": "IERC20",
"nodeType": "UserDefinedTypeName",
"referencedDeclaration": 2615,
"src": "10064:6:1",
"typeDescriptions": {
"typeIdentifier": "t_contract$_IERC20_$2615",
"typeString": "contract IERC20"
}
},
"id": 1256,
"nodeType": "InheritanceSpecifier",
"src": "10064:6:1"
}
],
"contractDependencies": [
2615
],
"contractKind": "interface",
"documentation": null,
"fullyImplemented": false,
"id": 1265,
"linearizedBaseContracts": [
1265,
2615
],
"name": "WETH",
"nodeType": "ContractDefinition",
"nodes": [
{
"body": null,
"documentation": null,
"functionSelector": "d0e30db0",
"id": 1259,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "deposit",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1257,
"nodeType": "ParameterList",
"parameters": [],
"src": "10093:2:1"
},
"returnParameters": {
"id": 1258,
"nodeType": "ParameterList",
"parameters": [],
"src": "10112:0:1"
},
"scope": 1265,
"src": "10077:36:1",
"stateMutability": "payable",
"virtual": false,
"visibility": "external"
},
{
"body": null,
"documentation": null,
"functionSelector": "2e1a7d4d",
"id": 1264,
"implemented": false,
"kind": "function",
"modifiers": [],
"name": "withdraw",
"nodeType": "FunctionDefinition",
"overrides": null,
"parameters": {
"id": 1262,
"nodeType": "ParameterList",
"parameters": [
{
"constant": false,
"id": 1261,
"mutability": "mutable",
"name": "amount",
"nodeType": "VariableDeclaration",
"overrides": null,
"scope": 1264,
"src": "10137:14:1",
"stateVariable": false,
"storageLocation": "default",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
},
"typeName": {
"id": 1260,
"name": "uint256",
"nodeType": "ElementaryTypeName",
"src": "10137:7:1",
"typeDescriptions": {
"typeIdentifier": "t_uint256",
"typeString": "uint256"
}
},
"value": null,
"visibility": "internal"
}
],
"src": "10136:16:1"
},
"returnParameters": {
"id": 1263,
"nodeType": "ParameterList",
"parameters": [],
"src": "10161:0:1"
},
"scope": 1265,
"src": "10119:43:1",
"stateMutability": "nonpayable",
"virtual": false,
"visibility": "external"
}
],
"scope": 1266,
"src": "10046:118:1"
}
],
"src": "103:10062:1"
},
"compiler": {
"name": "solc",
"version": "0.6.12+commit.27d51765.Emscripten.clang"
},
"networks": {},
"schemaVersion": "3.2.3",
"updatedAt": "2020-08-30T09:23:52.322Z",
"devdoc": {
"kind": "dev",
"methods": {},
"version": 1
},
"userdoc": {
"kind": "user",
"methods": {},
"version": 1
}
}