{
  "contractName": "EthVault",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "depositVerifiers",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_verifier",
          "type": "address"
        }
      ],
      "name": "setDepositVerifier",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getEffectiveDepositVerifier",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "newDepositVerifierMaturityTimestamp",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "safeGasStipend",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract PlasmaFramework",
          "name": "_framework",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_safeGasStipend",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "EthWithdrawn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "receiver",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "WithdrawFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "depositor",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "uint256",
          "name": "blknum",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "DepositCreated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "nextDepositVerifier",
          "type": "address"
        }
      ],
      "name": "SetDepositVerifierCalled",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_depositTx",
          "type": "bytes"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address payable",
          "name": "receiver",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.11+commit.c082d0b4\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"depositVerifiers\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_verifier\",\"type\":\"address\"}],\"name\":\"setDepositVerifier\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getEffectiveDepositVerifier\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_depositTx\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"newDepositVerifierMaturityTimestamp\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"safeGasStipend\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"receiver\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract PlasmaFramework\",\"name\":\"_framework\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_safeGasStipend\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"EthWithdrawn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"receiver\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"WithdrawFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"depositor\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"blknum\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"DepositCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"nextDepositVerifier\",\"type\":\"address\"}],\"name\":\"SetDepositVerifierCalled\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"deposit(bytes)\":{\"params\":{\"_depositTx\":\"RLP-encoded transaction to act as the deposit\"}},\"getEffectiveDepositVerifier()\":{\"return\":\"Contract address of the deposit verifier\"},\"setDepositVerifier(address)\":{\"details\":\"emit SetDepositVerifierCalledWhen one contract is already set, the next one is effective after 2 * MIN_EXIT_PERIOD.     This is to protect deposit transactions already in mempool,     and also make sure user only needs to SE within first week when invalid vault is registered.     *      see: https://github.com/omisego/plasma-contracts/issues/412          https://github.com/omisego/plasma-contracts/issues/173\",\"params\":{\"_verifier\":\"Address of the verifier contract\"}},\"withdraw(address,uint256)\":{\"details\":\"We do not want to block exit queue if a transfer is unsuccessful, so we don't revert on transfer error.     However, if there is not enough gas left for the safeGasStipend, then the EVM _will_ revert with an 'out of gas' error.     If this happens, the user should retry with higher gas.\",\"params\":{\"amount\":\"The amount of ETH to transfer\",\"receiver\":\"Address of the recipient\"}}}},\"userdoc\":{\"methods\":{\"deposit(bytes)\":{\"notice\":\"Allows a user to deposit ETH into the contract Once the deposit is recognized, the owner may transact on the OmiseGO Network\"},\"getEffectiveDepositVerifier()\":{\"notice\":\"Retrieves the currently effective deposit verifier contract address\"},\"setDepositVerifier(address)\":{\"notice\":\"Sets the deposit verifier contract, which may be called only by the operator\"},\"withdraw(address,uint256)\":{\"notice\":\"Withdraw ETH that has successfully exited from the OmiseGO Network\"}}}},\"settings\":{\"compilationTarget\":{\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/EthVault.sol\":\"EthVault\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/BlockController.sol\":{\"keccak256\":\"0xac302eceee96e5a83b7fdfb43d23389f516ff4b7322e5e094d7ad0b3be177c0b\",\"urls\":[\"bzz-raw://cf36aec949574838af497c6448000226d20aea4d0a787c746dd10775166df8a3\",\"dweb:/ipfs/QmQvD1DZfeidC1xiC3fnzTbCcgTTG9MuN6NNwKn965bVvC\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/ExitGameController.sol\":{\"keccak256\":\"0x136c47ad99baab47c0a90499bf359706d1d34bb7de8573ce3f2868bf1440acd8\",\"urls\":[\"bzz-raw://d1291a1b667dc916958dd9d0be246fe6e7601bc0c08be6a7e11747214a94ef59\",\"dweb:/ipfs/QmampH1Xg4Z5KzToYR5Sngt36EFL45psZWtdfstSm9AVoS\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/PlasmaFramework.sol\":{\"keccak256\":\"0x4b017fa7cae50fcf79803255fe0ffe8183e8f3934d9ac46a48235986f4714179\",\"urls\":[\"bzz-raw://30974a631b8c13aedea212390fcc1cf75472dc3f49a9c52eb33fc07c04b545e1\",\"dweb:/ipfs/QmT15Bw5NtE7b1RvVcmRXcGkEAL9BpbbgKwMtJBphXTbLd\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/Protocol.sol\":{\"keccak256\":\"0x81e37c136c340d917e370c58894761aee710bbef727414685490e405bc0f18e8\",\"urls\":[\"bzz-raw://7a54192b587531dd1adc33202479142afdf116385bab22daa153b8d4439d7333\",\"dweb:/ipfs/QmT37F3SCsWLf93okFrx1LUUr6c2zXCj28u2sjXXFBef2X\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/interfaces/IExitProcessor.sol\":{\"keccak256\":\"0x93c31f7c8ff69c80bd30f9296a7b2059affedadefc0c2cfb5c992eb1f1885fa2\",\"urls\":[\"bzz-raw://d56cb65fd67b07cec3bb17f48c064df4ea892780bf21d87d717e6581feb92ffd\",\"dweb:/ipfs/QmZZGPdSSN81c2P1CBnrCQD9mRWntPUPUjm4vCgWsBqS14\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/models/BlockModel.sol\":{\"keccak256\":\"0x7d26be621a43e2b8855f6c71f91c886d3b48ed809f421a1eee9c165c803d0cf7\",\"urls\":[\"bzz-raw://850b2acb61d96e9eb09d8bf24617ecf47aa948d6754b2d09d0e0d2b949193a2d\",\"dweb:/ipfs/QmW8yoi4jZxHAJf4bNjtt3nGckaWUEX92ZbgrKpoRHJGRM\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/registries/ExitGameRegistry.sol\":{\"keccak256\":\"0x4695a609c60b6be59bbc49ed6d3b14725bcc2efcecd083f8cabbcd3ddb399e68\",\"urls\":[\"bzz-raw://d31ca9188c426bbb2e8cf0fca61a9d451497408ddb4708cfc78d543b75fcb274\",\"dweb:/ipfs/QmawYeD9CCd5chGoB62zVKpk5Q9zJxhUUGJu7hUaCF5JXM\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/registries/VaultRegistry.sol\":{\"keccak256\":\"0x7786b4b8b043026655fa872f11ec747ef600100cc73da38369e1e2fd5047c95a\",\"urls\":[\"bzz-raw://b957490e53281e516290455b78722627f5536e0bd6b9bc17777f3f7a93ed9b14\",\"dweb:/ipfs/QmbUEwWfkTCSPPNEjAJUEXwgCCY9cBPgAKJagRbYQ3PSLE\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/utils/ExitPriority.sol\":{\"keccak256\":\"0x18a6c6b1f8c072e693d855bc8991ea4c51951f9058fd116253a1b8ccb6fc1647\",\"urls\":[\"bzz-raw://a22420b5f647d6108be8a3de23b5dd561f65b12dd804ead7edf5384407a506f3\",\"dweb:/ipfs/QmTd986YDqtwQ1eXqUP4esUBKxGthieXJWkQTsMJzewXgA\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/utils/PriorityQueue.sol\":{\"keccak256\":\"0xf46de2038d5fbc06f1aba7f36e7e02ead27485044ccf25afc2b9ad84ea705991\",\"urls\":[\"bzz-raw://a23fd7ad08f351743c7599fa546a0b54586e7e319c00c3e9d41c3aa10546ec5d\",\"dweb:/ipfs/QmWH32SoQmhyy7CE8u8g412e1AosogVE3eEBjrAh9MABvb\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/utils/Quarantine.sol\":{\"keccak256\":\"0x1b685ea3de626e3d8961d0e384a67c3e87752874784cc2e59777857d130f2390\",\"urls\":[\"bzz-raw://28c30354aa580476f230c4d8e151d34337b923caabc6bccfe560d75ef37d446e\",\"dweb:/ipfs/Qmf9nCYFBhHDyMgHmxX5pSkqLpqb2W3XffPopdkJTHmnAA\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/utils/OnlyFromAddress.sol\":{\"keccak256\":\"0x54d4cb74bf5c448bb383ff4ffce898473739a5ba015e439dae1c092c70df943f\",\"urls\":[\"bzz-raw://5c9efbe363534d6746573b9b0dda687d257272c3ce0123b6a45bc7eef55a40b4\",\"dweb:/ipfs/QmZPLF1bKdU6DAZZcxWfMudUwzeubLxsSk14x8hvUMj15X\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/utils/PosLib.sol\":{\"keccak256\":\"0xd47b38ef93cf913b6b7a3bf608dec2c084108d090cc02b222da3d8eb39819d5f\",\"urls\":[\"bzz-raw://c42d551c21adfa400d08108673b29e4bd1eec70aaa469287571071df3f8f0bc1\",\"dweb:/ipfs/Qmepq632azqUDHt5ypVwmkTfeQG8uP1HYw8x1H3Hdg9K6R\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/utils/SafeEthTransfer.sol\":{\"keccak256\":\"0xe707370228eea8c9c613472dd4d44df94ba631892bc74077cf5af24097944aad\",\"urls\":[\"bzz-raw://803b2c876f40f8d8dbcbca8b6cde233d73a98c4d2384c90e259da1c169225de9\",\"dweb:/ipfs/QmZkb1kHBmFb4jGgZepfAJsiZM6beQJiS9x319QZxExiB4\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/EthVault.sol\":{\"keccak256\":\"0x97b047f61e71f24f0febf094358731d4a61e27219c43162776fff4c37d28948f\",\"urls\":[\"bzz-raw://4d8139071bb54c50fea28af039741b9621d7f92ffb689c74ecb105a315555f7e\",\"dweb:/ipfs/QmaHVjgpcqThQ4MtdnEKQ7HECJrRBRaLd24Exa3oKZj8T5\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/Vault.sol\":{\"keccak256\":\"0x2db04ba824e64bb121c7a3733654774198011c3b5a264a068c24146dc359444f\",\"urls\":[\"bzz-raw://c047c9e255606d272deccb90edf90ad3eb1bc65780726a91b16792e8e469f577\",\"dweb:/ipfs/QmP6rJfCpRdgbEDaYMr7wgHxM8PyBSk5KAdtVTbkSRXYyF\"]},\"/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/verifiers/IEthDepositVerifier.sol\":{\"keccak256\":\"0x32e47ecde587dae08d902c081bf9e871137aa5ef049354220cd0360d5deb8e47\",\"urls\":[\"bzz-raw://dfcc1f319dc9131d6a07ae9c867225c66be262e871939d82ab66fd630dd4395f\",\"dweb:/ipfs/Qmef9deSffr7LGBhqqjKSNfqEPNj267WrY2ysXWq9YgZUy\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610\",\"dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf\",\"dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3\"]}},\"version\":1}",
  "bytecode": "0x60806040527f800000000000000000000000000000000000000000000000000000000000000060135534801561003457600080fd5b50604051610bdb380380610bdb8339818101604052604081101561005757600080fd5b508051602090910151600080546001600160a01b0319166001600160a01b0384161790558161008461009d565b610092906001906010610163565b5050601455506101da565b6100a56101a1565b6100ad6101a1565b6040805160006020808301829052602180840183905284518085039091018152604190930190935281519190920120905b601081101561015a57818382601081106100f457fe5b60209081029190910191909152604080517f010000000000000000000000000000000000000000000000000000000000000081840152602181018590526041808201959095528151808203909501855260610190528251920191909120906001016100de565b50909150505b90565b8260108101928215610191579160200282015b82811115610191578251825591602001919060010190610176565b5061019d9291506101c0565b5090565b6040518061020001604052806010906020820280388339509192915050565b61016091905b8082111561019d57600081556001016101c6565b6109f2806101e96000396000f3fe6080604052600436106100705760003560e01c806398b1e06a1161004e57806398b1e06a14610105578063a7e5994f14610175578063ccbd21761461019c578063f3fef3a3146101b157610070565b806302e9b07b146100755780632c6ce78b146100bb57806352518b7f146100f0575b600080fd5b34801561008157600080fd5b5061009f6004803603602081101561009857600080fd5b50356101ea565b604080516001600160a01b039092168252519081900360200190f35b3480156100c757600080fd5b506100ee600480360360208110156100de57600080fd5b50356001600160a01b0316610207565b005b3480156100fc57600080fd5b5061009f610439565b6100ee6004803603602081101561011b57600080fd5b81019060208101813564010000000081111561013657600080fd5b82018360208201111561014857600080fd5b8035906020019184600183028401116401000000008311171561016a57600080fd5b509092509050610468565b34801561018157600080fd5b5061018a6105e7565b60408051918252519081900360200190f35b3480156101a857600080fd5b5061018a6105ed565b3480156101bd57600080fd5b506100ee600480360360408110156101d457600080fd5b506001600160a01b0381351690602001356105f3565b601181600281106101f757fe5b01546001600160a01b0316905081565b6000809054906101000a90046001600160a01b03166001600160a01b0316634b0a72bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561025457600080fd5b505afa158015610268573d6000803e3d6000fd5b505050506040513d602081101561027e57600080fd5b5051336001600160a01b038216146102dd576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206164647265737320697320756e617574686f72697a65640000604482015290519081900360640190fd5b6001600160a01b0382166103225760405162461bcd60e51b815260040180806020018281038252602f815260200180610930602f913960400191505060405180910390fd5b6011546001600160a01b0316156103dd5761033b610439565b601180546001600160a01b03199081166001600160a01b0393841617909155601280549091168483161790556000546040805163d4a2b4ef60e01b81529051919092169163d4a2b4ef916004808301926020929190829003018186803b1580156103a457600080fd5b505afa1580156103b8573d6000803e3d6000fd5b505050506040513d60208110156103ce57600080fd5b505160020242016013556103f9565b601180546001600160a01b0319166001600160a01b0384161790555b604080516001600160a01b038416815290517f11e5a7570e0de4b31179f8c9cf5e8a1e6cfd23731ec7a5a06e3006d71dd321fd9181900360200190a15050565b600060135442101561045c57601160005b01546001600160a01b03169050610465565b6011600161044a565b90565b6000610472610439565b90506001600160a01b0381166104b95760405162461bcd60e51b815260040180806020018281038252602181526020018061095f6021913960400191505060405180910390fd5b806001600160a01b031663aee150c7848434336040518563ffffffff1660e01b81526004018080602001848152602001836001600160a01b03166001600160a01b031681526020018281038252868682818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b15801561054b57600080fd5b505afa15801561055f573d6000803e3d6000fd5b5050505060006105a484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061074592505050565b604080513481529051919250600091839133917f18569122d84f30025bb8dffb33563f1bdbfb9637f21552b11b8305686e9cb3079181900360200190a450505050565b60135481565b60145481565b60005460408051632d0816d760e11b815233600482015290516001600160a01b0390921691635a102dae91602480820192602092909190829003018186803b15801561063e57600080fd5b505afa158015610652573d6000803e3d6000fd5b505050506040513d602081101561066857600080fd5b50516106a55760405162461bcd60e51b815260040180806020018281038252603e815260200180610980603e913960400191505060405180910390fd5b60006106b483836014546107d7565b90508015610700576040805183815290516001600160a01b038516917f8455ae6be5d92f1df1c3c1484388e247a36c7e60d72055ae216dbc258f257d4b919081900360200190a2610740565b6040805183815290516001600160a01b038516917fa2269912b47133fae1d7f448c9284ea248951ac29b8c7c41d301f8721a38d10d919081900360200190a25b505050565b60008061075183610838565b60008054604080516317cb58d360e31b815260048101859052905193945091926001600160a01b039091169163be5ac69891602480830192602092919082900301818787803b1580156107a357600080fd5b505af11580156107b7573d6000803e3d6000fd5b505050506040513d60208110156107cd57600080fd5b5051949350505050565b60405160009081906001600160a01b038616908490869084818181858888f193505050503d8060008114610827576040519150601f19603f3d011682016040523d82523d6000602084013e61082c565b606091505b50909695505050505050565b60405160006020808301828152845192938493849387939260210191908401908083835b6020831061087b5780518252601f19909201916020918201910161085c565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405280519060200120905060008090505b601081101561092857600160f81b82600183601081106108db57fe5b0154604080516001600160f81b03199094166020808601919091526021850193909352604180850192909252805180850390920182526061909301909252815191012091506001016108bf565b509291505056fe43616e6e6f742073657420616e20656d7074792061646472657373206173206465706f7369742076657269666965724465706f73697420766572696669657220686173206e6f74206265656e2073657443616c6c65642066726f6d2061206e6f6e2d72656769737465726564206f722071756172616e74696e656420657869742067616d6520636f6e7472616374a265627a7a72315820ae344baa03fa432bc0b1a0dd4763366ca4ed5071d603b9b83461b1f84c0f3c7b64736f6c634300050b0032",
  "deployedBytecode": "0x6080604052600436106100705760003560e01c806398b1e06a1161004e57806398b1e06a14610105578063a7e5994f14610175578063ccbd21761461019c578063f3fef3a3146101b157610070565b806302e9b07b146100755780632c6ce78b146100bb57806352518b7f146100f0575b600080fd5b34801561008157600080fd5b5061009f6004803603602081101561009857600080fd5b50356101ea565b604080516001600160a01b039092168252519081900360200190f35b3480156100c757600080fd5b506100ee600480360360208110156100de57600080fd5b50356001600160a01b0316610207565b005b3480156100fc57600080fd5b5061009f610439565b6100ee6004803603602081101561011b57600080fd5b81019060208101813564010000000081111561013657600080fd5b82018360208201111561014857600080fd5b8035906020019184600183028401116401000000008311171561016a57600080fd5b509092509050610468565b34801561018157600080fd5b5061018a6105e7565b60408051918252519081900360200190f35b3480156101a857600080fd5b5061018a6105ed565b3480156101bd57600080fd5b506100ee600480360360408110156101d457600080fd5b506001600160a01b0381351690602001356105f3565b601181600281106101f757fe5b01546001600160a01b0316905081565b6000809054906101000a90046001600160a01b03166001600160a01b0316634b0a72bc6040518163ffffffff1660e01b815260040160206040518083038186803b15801561025457600080fd5b505afa158015610268573d6000803e3d6000fd5b505050506040513d602081101561027e57600080fd5b5051336001600160a01b038216146102dd576040805162461bcd60e51b815260206004820152601e60248201527f43616c6c6572206164647265737320697320756e617574686f72697a65640000604482015290519081900360640190fd5b6001600160a01b0382166103225760405162461bcd60e51b815260040180806020018281038252602f815260200180610930602f913960400191505060405180910390fd5b6011546001600160a01b0316156103dd5761033b610439565b601180546001600160a01b03199081166001600160a01b0393841617909155601280549091168483161790556000546040805163d4a2b4ef60e01b81529051919092169163d4a2b4ef916004808301926020929190829003018186803b1580156103a457600080fd5b505afa1580156103b8573d6000803e3d6000fd5b505050506040513d60208110156103ce57600080fd5b505160020242016013556103f9565b601180546001600160a01b0319166001600160a01b0384161790555b604080516001600160a01b038416815290517f11e5a7570e0de4b31179f8c9cf5e8a1e6cfd23731ec7a5a06e3006d71dd321fd9181900360200190a15050565b600060135442101561045c57601160005b01546001600160a01b03169050610465565b6011600161044a565b90565b6000610472610439565b90506001600160a01b0381166104b95760405162461bcd60e51b815260040180806020018281038252602181526020018061095f6021913960400191505060405180910390fd5b806001600160a01b031663aee150c7848434336040518563ffffffff1660e01b81526004018080602001848152602001836001600160a01b03166001600160a01b031681526020018281038252868682818152602001925080828437600081840152601f19601f8201169050808301925050509550505050505060006040518083038186803b15801561054b57600080fd5b505afa15801561055f573d6000803e3d6000fd5b5050505060006105a484848080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061074592505050565b604080513481529051919250600091839133917f18569122d84f30025bb8dffb33563f1bdbfb9637f21552b11b8305686e9cb3079181900360200190a450505050565b60135481565b60145481565b60005460408051632d0816d760e11b815233600482015290516001600160a01b0390921691635a102dae91602480820192602092909190829003018186803b15801561063e57600080fd5b505afa158015610652573d6000803e3d6000fd5b505050506040513d602081101561066857600080fd5b50516106a55760405162461bcd60e51b815260040180806020018281038252603e815260200180610980603e913960400191505060405180910390fd5b60006106b483836014546107d7565b90508015610700576040805183815290516001600160a01b038516917f8455ae6be5d92f1df1c3c1484388e247a36c7e60d72055ae216dbc258f257d4b919081900360200190a2610740565b6040805183815290516001600160a01b038516917fa2269912b47133fae1d7f448c9284ea248951ac29b8c7c41d301f8721a38d10d919081900360200190a25b505050565b60008061075183610838565b60008054604080516317cb58d360e31b815260048101859052905193945091926001600160a01b039091169163be5ac69891602480830192602092919082900301818787803b1580156107a357600080fd5b505af11580156107b7573d6000803e3d6000fd5b505050506040513d60208110156107cd57600080fd5b5051949350505050565b60405160009081906001600160a01b038616908490869084818181858888f193505050503d8060008114610827576040519150601f19603f3d011682016040523d82523d6000602084013e61082c565b606091505b50909695505050505050565b60405160006020808301828152845192938493849387939260210191908401908083835b6020831061087b5780518252601f19909201916020918201910161085c565b6001836020036101000a0380198251168184511680821785525050505050509050019250505060405160208183030381529060405280519060200120905060008090505b601081101561092857600160f81b82600183601081106108db57fe5b0154604080516001600160f81b03199094166020808601919091526021850193909352604180850192909252805180850390920182526061909301909252815191012091506001016108bf565b509291505056fe43616e6e6f742073657420616e20656d7074792061646472657373206173206465706f7369742076657269666965724465706f73697420766572696669657220686173206e6f74206265656e2073657443616c6c65642066726f6d2061206e6f6e2d72656769737465726564206f722071756172616e74696e656420657869742067616d6520636f6e7472616374a265627a7a72315820ae344baa03fa432bc0b1a0dd4763366ca4ed5071d603b9b83461b1f84c0f3c7b64736f6c634300050b0032",
  "sourceMap": "176:2098:97:-;;;1015:8:98;962:61;;580:139:97;8:9:-1;5:2;;;30:1;27;20:12;5:2;580:139:97;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;580:139:97;;;;;;;1114:9:98;:22;;-1:-1:-1;;;;;;1114:22:98;-1:-1:-1;;;;;1114:22:98;;;;;580:139:97;1159:15:98;:13;:15::i;:::-;1146:28;;:10;;:28;;:::i;:::-;-1:-1:-1;;680:14:97;:32;-1:-1:-1;176:2098:97;;1294:378:98;1341:18;;:::i;:::-;1371:25;;:::i;:::-;1435:39;;;1406:16;1435:39;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1435:39:98;;;;;;;1425:50;;;;;;;;1485:158;1506:2;1502:1;:6;1485:158;;;1541:8;1529:6;1536:1;1529:9;;;;;;;;;;;;;;;:20;;;;1584:47;;;1601:9;1584:47;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1584:47:98;;;;1574:58;;;;;;;;;456:4;1510:3;1485:158;;;-1:-1:-1;1659:6:98;;-1:-1:-1;;1294:378:98;;:::o;176:2098:97:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;176:2098:97;;;-1:-1:-1;176:2098:97;:::i;:::-;;;:::o;:::-;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;-1:-1;176:2098:97;;;-1:-1:-1;;176:2098:97:o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "176:2098:97:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;922:34:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;922:34:98;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;922:34:98;;:::i;:::-;;;;-1:-1:-1;;;;;922:34:98;;;;;;;;;;;;;;2670:560;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2670:560:98;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2670:560:98;-1:-1:-1;;;;;2670:560:98;;:::i;:::-;;3391:240;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3391:240:98;;;:::i;959:449:97:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;959:449:97;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;959:449:97;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;959:449:97;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;959:449:97;;-1:-1:-1;959:449:97;-1:-1:-1;959:449:97;:::i;962:61:98:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;962:61:98;;;:::i;:::-;;;;;;;;;;;;;;;;544:29:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;544:29:97;;;:::i;1920:352::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1920:352:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;1920:352:97;;;;;;;;:::i;922:34:98:-;;;;;;;;;;;;-1:-1:-1;;;;;922:34:98;;-1:-1:-1;922:34:98;:::o;2670:560::-;2733:9;;;;;;;;;-1:-1:-1;;;;;2733:9:98;-1:-1:-1;;;;;2733:23:98;;:25;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2733:25:98;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2733:25:98;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2733:25:98;109:10:91;-1:-1:-1;;;;;109:20:91;;;101:63;;;;;-1:-1:-1;;;101:63:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2778:23:98;;2770:83;;;;-1:-1:-1;;;2770:83:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2868:16;:19;-1:-1:-1;;;;;2868:19:98;:33;2864:309;;2939:29;:27;:29::i;:::-;2917:16;:51;;-1:-1:-1;;;;;;2917:51:98;;;-1:-1:-1;;;;;2917:51:98;;;;;;;2982:19;:31;;;;;;;;;;;-1:-1:-1;3075:9:98;:25;;;-1:-1:-1;;;3075:25:98;;;;:9;;;;;:23;;:25;;;;;;;;;;;;;;:9;:25;;;5:2:-1;;;;30:1;27;20:12;5:2;3075:25:98;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3075:25:98;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3075:25:98;3071:1;:29;3065:3;:35;3027;:73;2864:309;;;3131:16;:31;;-1:-1:-1;;;;;;3131:31:98;-1:-1:-1;;;;;3131:31:98;;;;;2864:309;3188:35;;;-1:-1:-1;;;;;3188:35:98;;;;;;;;;;;;;;;2670:560;;:::o;3391:240::-;3451:7;3480:35;;3474:3;:41;3470:155;;;3538:16;3555:1;3538:19;;;-1:-1:-1;;;;;3538:19:98;;-1:-1:-1;3531:26:98;;3470:155;3595:16;3612:1;3595:19;;3470:155;3391:240;:::o;959:449:97:-;1030:23;1056:35;:33;:35::i;:::-;1030:61;-1:-1:-1;;;;;;1109:29:97;;1101:75;;;;-1:-1:-1;;;1101:75:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1207:15;-1:-1:-1;;;;;1187:43:97;;1231:10;;1243:9;1254:10;1187:78;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1187:78:97;-1:-1:-1;;;;;1187:78:97;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;1187:78:97;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1187:78:97;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1187:78:97;;;;1275:14;1292:36;1317:10;;1292:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1292:24:97;;-1:-1:-1;;;1292:36:97:i;:::-;1344:57;;;1391:9;1344:57;;;;1275:53;;-1:-1:-1;1387:1:97;;1275:53;;1359:10;;1344:57;;;;;;;;;959:449;;;;:::o;962:61:98:-;;;;:::o;544:29:97:-;;;;:::o;1920:352::-;1875:9:98;;1858:59;;;-1:-1:-1;;;1858:59:98;;1906:10;1858:59;;;;;;-1:-1:-1;;;;;1875:9:98;;;;1858:47;;:59;;;;;;;;;;;;;;;1875:9;1858:59;;;5:2:-1;;;;30:1;27;20:12;5:2;1858:59:98;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1858:59:98;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1858:59:98;1837:168;;;;-1:-1:-1;;;1837:168:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2030:12:97;2045:70;2082:8;2092:6;2100:14;;2045:36;:70::i;:::-;2030:85;;2129:7;2125:141;;;2157:30;;;;;;;;-1:-1:-1;;;;;2157:30:97;;;;;;;;;;;;;2125:141;;;2223:32;;;;;;;;-1:-1:-1;;;;;2223:32:97;;;;;;;;;;;;;2125:141;2015:1:98;1920:352:97;;:::o;3802:240:98:-;3872:7;3891:12;3906:30;3926:9;3906:19;:30::i;:::-;3947:21;3971:9;;:34;;;-1:-1:-1;;;3971:34:98;;;;;;;;;;3891:45;;-1:-1:-1;3947:21:98;;-1:-1:-1;;;;;3971:9:98;;;;:28;;:34;;;;;;;;;;;;;;3947:21;3971:9;:34;;;5:2:-1;;;;30:1;27;20:12;5:2;3971:34:98;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3971:34:98;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3971:34:98;;3802:240;-1:-1:-1;;;;3802:240:98:o;1610:243:95:-;1775:47;;1736:4;;;;-1:-1:-1;;;;;1775:13:95;;;1793:10;;1811:6;;1736:4;1775:47;1736:4;1775:47;1811:6;1775:13;1793:10;1775:47;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;1756:66:95;;1610:243;-1:-1:-1;;;;;;1610:243:95:o;4048:316:98:-;4167:38;;4123:7;4167:38;;;;;;;;;4123:7;;;;;;4195:9;;4167:38;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4167:38:98;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;4167:38:98;;;4157:49;;;;;;4142:64;;4221:6;4230:1;4221:10;;4216:121;4237:2;4233:1;:6;4216:121;;;-1:-1:-1;;;4305:4:98;456;4322:1;4311:13;;;;;;;;;4277:48;;;-1:-1:-1;;;;;;4277:48:98;;;;;;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4277:48:98;;;;;;;4267:59;;;;;;-1:-1:-1;4277:48:98;4241:3;4216:121;;;-1:-1:-1;4353:4:98;4048:316;-1:-1:-1;;4048:316:98:o",
  "source": "pragma solidity 0.5.11;\n\nimport \"./Vault.sol\";\nimport \"./verifiers/IEthDepositVerifier.sol\";\nimport \"../framework/PlasmaFramework.sol\";\nimport \"../utils/SafeEthTransfer.sol\";\n\ncontract EthVault is Vault {\n    event EthWithdrawn(\n        address indexed receiver,\n        uint256 amount\n    );\n\n    event WithdrawFailed(\n        address indexed receiver,\n        uint256 amount\n    );\n\n    event DepositCreated(\n        address indexed depositor,\n        uint256 indexed blknum,\n        address indexed token,\n        uint256 amount\n    );\n\n    uint256 public safeGasStipend;\n\n    constructor(PlasmaFramework _framework, uint256 _safeGasStipend) public Vault(_framework) {\n        safeGasStipend = _safeGasStipend;\n    }\n\n    /**\n     * @notice Allows a user to deposit ETH into the contract\n     * Once the deposit is recognized, the owner may transact on the OmiseGO Network\n     * @param _depositTx RLP-encoded transaction to act as the deposit\n     */\n    function deposit(bytes calldata _depositTx) external payable {\n        address depositVerifier = super.getEffectiveDepositVerifier();\n        require(depositVerifier != address(0), \"Deposit verifier has not been set\");\n\n        IEthDepositVerifier(depositVerifier).verify(_depositTx, msg.value, msg.sender);\n        uint256 blknum = super.submitDepositBlock(_depositTx);\n\n        emit DepositCreated(msg.sender, blknum, address(0), msg.value);\n    }\n\n    /**\n    * @notice Withdraw ETH that has successfully exited from the OmiseGO Network\n    * @dev We do not want to block exit queue if a transfer is unsuccessful, so we don't revert on transfer error.\n    *      However, if there is not enough gas left for the safeGasStipend, then the EVM _will_ revert with an 'out of gas' error.\n    *      If this happens, the user should retry with higher gas.\n    * @param receiver Address of the recipient\n    * @param amount The amount of ETH to transfer\n    */\n    function withdraw(address payable receiver, uint256 amount) external onlyFromNonQuarantinedExitGame {\n        bool success = SafeEthTransfer.transferReturnResult(receiver, amount, safeGasStipend);\n        if (success) {\n            emit EthWithdrawn(receiver, amount);\n        } else {\n            emit WithdrawFailed(receiver, amount);\n        }\n    }\n}\n",
  "sourcePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/EthVault.sol",
  "ast": {
    "absolutePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/EthVault.sol",
    "exportedSymbols": {
      "EthVault": [
        15393
      ]
    },
    "id": 15394,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 15264,
        "literals": [
          "solidity",
          "0.5",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:97"
      },
      {
        "absolutePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/Vault.sol",
        "file": "./Vault.sol",
        "id": 15265,
        "nodeType": "ImportDirective",
        "scope": 15394,
        "sourceUnit": 15664,
        "src": "25:21:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/verifiers/IEthDepositVerifier.sol",
        "file": "./verifiers/IEthDepositVerifier.sol",
        "id": 15266,
        "nodeType": "ImportDirective",
        "scope": 15394,
        "sourceUnit": 15978,
        "src": "47:45:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/PlasmaFramework.sol",
        "file": "../framework/PlasmaFramework.sol",
        "id": 15267,
        "nodeType": "ImportDirective",
        "scope": 15394,
        "sourceUnit": 12153,
        "src": "93:42:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/utils/SafeEthTransfer.sol",
        "file": "../utils/SafeEthTransfer.sol",
        "id": 15268,
        "nodeType": "ImportDirective",
        "scope": 15394,
        "sourceUnit": 15132,
        "src": "136:38:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 15269,
              "name": "Vault",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15663,
              "src": "197:5:97",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vault_$15663",
                "typeString": "contract Vault"
              }
            },
            "id": 15270,
            "nodeType": "InheritanceSpecifier",
            "src": "197:5:97"
          }
        ],
        "contractDependencies": [
          14291,
          15663
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 15393,
        "linearizedBaseContracts": [
          15393,
          15663,
          14291
        ],
        "name": "EthVault",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 15276,
            "name": "EthWithdrawn",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 15275,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15272,
                  "indexed": true,
                  "name": "receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 15276,
                  "src": "237:24:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15271,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "237:7:97",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15274,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 15276,
                  "src": "271:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15273,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "271:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "227:64:97"
            },
            "src": "209:83:97"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 15282,
            "name": "WithdrawFailed",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 15281,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15278,
                  "indexed": true,
                  "name": "receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 15282,
                  "src": "328:24:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15277,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "328:7:97",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15280,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 15282,
                  "src": "362:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15279,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "362:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "318:64:97"
            },
            "src": "298:85:97"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 15292,
            "name": "DepositCreated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 15291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15284,
                  "indexed": true,
                  "name": "depositor",
                  "nodeType": "VariableDeclaration",
                  "scope": 15292,
                  "src": "419:25:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15283,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "419:7:97",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15286,
                  "indexed": true,
                  "name": "blknum",
                  "nodeType": "VariableDeclaration",
                  "scope": 15292,
                  "src": "454:22:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15285,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "454:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15288,
                  "indexed": true,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 15292,
                  "src": "486:21:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15287,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "486:7:97",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15290,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 15292,
                  "src": "517:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15289,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "517:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "409:128:97"
            },
            "src": "389:149:97"
          },
          {
            "constant": false,
            "id": 15294,
            "name": "safeGasStipend",
            "nodeType": "VariableDeclaration",
            "scope": 15393,
            "src": "544:29:97",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 15293,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "544:7:97",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15308,
              "nodeType": "Block",
              "src": "670:49:97",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15304,
                      "name": "safeGasStipend",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15294,
                      "src": "680:14:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 15305,
                      "name": "_safeGasStipend",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15298,
                      "src": "697:15:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "680:32:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15307,
                  "nodeType": "ExpressionStatement",
                  "src": "680:32:97"
                }
              ]
            },
            "documentation": null,
            "id": 15309,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 15301,
                    "name": "_framework",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 15296,
                    "src": "658:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PlasmaFramework_$12152",
                      "typeString": "contract PlasmaFramework"
                    }
                  }
                ],
                "id": 15302,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 15300,
                  "name": "Vault",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 15663,
                  "src": "652:5:97",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Vault_$15663_$",
                    "typeString": "type(contract Vault)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "652:17:97"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15299,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15296,
                  "name": "_framework",
                  "nodeType": "VariableDeclaration",
                  "scope": 15309,
                  "src": "592:26:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_PlasmaFramework_$12152",
                    "typeString": "contract PlasmaFramework"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 15295,
                    "name": "PlasmaFramework",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12152,
                    "src": "592:15:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PlasmaFramework_$12152",
                      "typeString": "contract PlasmaFramework"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15298,
                  "name": "_safeGasStipend",
                  "nodeType": "VariableDeclaration",
                  "scope": 15309,
                  "src": "620:23:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15297,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "620:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "591:53:97"
            },
            "returnParameters": {
              "id": 15303,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "670:0:97"
            },
            "scope": 15393,
            "src": "580:139:97",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15358,
              "nodeType": "Block",
              "src": "1020:388:97",
              "statements": [
                {
                  "assignments": [
                    15315
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15315,
                      "name": "depositVerifier",
                      "nodeType": "VariableDeclaration",
                      "scope": 15358,
                      "src": "1030:23:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15314,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1030:7:97",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 15319,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 15316,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17394,
                        "src": "1056:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_EthVault_$15393",
                          "typeString": "contract super EthVault"
                        }
                      },
                      "id": 15317,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getEffectiveDepositVerifier",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15594,
                      "src": "1056:33:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                        "typeString": "function () view returns (address)"
                      }
                    },
                    "id": 15318,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1056:35:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1030:61:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 15325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 15321,
                          "name": "depositVerifier",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15315,
                          "src": "1109:15:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 15323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1136:1:97",
                              "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": 15322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1128:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 15324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1128:10:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "1109:29:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4465706f73697420766572696669657220686173206e6f74206265656e20736574",
                        "id": 15326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1140:35:97",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b42006fba6f0d3356831fe67edf97c0fb3b90293873f1de2d7507016ee49ec70",
                          "typeString": "literal_string \"Deposit verifier has not been set\""
                        },
                        "value": "Deposit verifier has not been set"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b42006fba6f0d3356831fe67edf97c0fb3b90293873f1de2d7507016ee49ec70",
                          "typeString": "literal_string \"Deposit verifier has not been set\""
                        }
                      ],
                      "id": 15320,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        17306,
                        17307
                      ],
                      "referencedDeclaration": 17307,
                      "src": "1101:7:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1101:75:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15328,
                  "nodeType": "ExpressionStatement",
                  "src": "1101:75:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15333,
                        "name": "_depositTx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15311,
                        "src": "1231:10:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 15334,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17303,
                          "src": "1243:3:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 15335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1243:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 15336,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17303,
                          "src": "1254:3:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 15337,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1254:10:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15330,
                            "name": "depositVerifier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15315,
                            "src": "1207:15:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 15329,
                          "name": "IEthDepositVerifier",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15977,
                          "src": "1187:19:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IEthDepositVerifier_$15977_$",
                            "typeString": "type(contract IEthDepositVerifier)"
                          }
                        },
                        "id": 15331,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1187:36:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEthDepositVerifier_$15977",
                          "typeString": "contract IEthDepositVerifier"
                        }
                      },
                      "id": 15332,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "verify",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15976,
                      "src": "1187:43:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (bytes memory,uint256,address) view external"
                      }
                    },
                    "id": 15338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1187:78:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15339,
                  "nodeType": "ExpressionStatement",
                  "src": "1187:78:97"
                },
                {
                  "assignments": [
                    15341
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15341,
                      "name": "blknum",
                      "nodeType": "VariableDeclaration",
                      "scope": 15358,
                      "src": "1275:14:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 15340,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1275:7:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 15346,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15344,
                        "name": "_depositTx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15311,
                        "src": "1317:10:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 15342,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17394,
                        "src": "1292:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_EthVault_$15393",
                          "typeString": "contract super EthVault"
                        }
                      },
                      "id": 15343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "submitDepositBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15617,
                      "src": "1292:24:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory) returns (uint256)"
                      }
                    },
                    "id": 15345,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1292:36:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1275:53:97"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 15348,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17303,
                          "src": "1359:3:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 15349,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1359:10:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 15350,
                        "name": "blknum",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15341,
                        "src": "1371:6:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 15352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1387:1:97",
                            "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": 15351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1379:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 15353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1379:10:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 15354,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17303,
                          "src": "1391:3:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 15355,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1391:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 15347,
                      "name": "DepositCreated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15292,
                      "src": "1344:14:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,address,uint256)"
                      }
                    },
                    "id": 15356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1344:57:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15357,
                  "nodeType": "EmitStatement",
                  "src": "1339:62:97"
                }
              ]
            },
            "documentation": "@notice Allows a user to deposit ETH into the contract\nOnce the deposit is recognized, the owner may transact on the OmiseGO Network\n@param _depositTx RLP-encoded transaction to act as the deposit",
            "id": 15359,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deposit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15312,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15311,
                  "name": "_depositTx",
                  "nodeType": "VariableDeclaration",
                  "scope": 15359,
                  "src": "976:25:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15310,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "976:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "975:27:97"
            },
            "returnParameters": {
              "id": 15313,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1020:0:97"
            },
            "scope": 15393,
            "src": "959:449:97",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 15391,
              "nodeType": "Block",
              "src": "2020:252:97",
              "statements": [
                {
                  "assignments": [
                    15369
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15369,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 15391,
                      "src": "2030:12:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 15368,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2030:4:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 15376,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15372,
                        "name": "receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15361,
                        "src": "2082:8:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 15373,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15363,
                        "src": "2092:6:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 15374,
                        "name": "safeGasStipend",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15294,
                        "src": "2100:14:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 15370,
                        "name": "SafeEthTransfer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15131,
                        "src": "2045:15:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SafeEthTransfer_$15131_$",
                          "typeString": "type(library SafeEthTransfer)"
                        }
                      },
                      "id": 15371,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferReturnResult",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15130,
                      "src": "2045:36:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address payable,uint256,uint256) returns (bool)"
                      }
                    },
                    "id": 15375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2045:70:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2030:85:97"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 15377,
                    "name": "success",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 15369,
                    "src": "2129:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 15389,
                    "nodeType": "Block",
                    "src": "2204:62:97",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15385,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15361,
                              "src": "2238:8:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15386,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15363,
                              "src": "2248:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15384,
                            "name": "WithdrawFailed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15282,
                            "src": "2223:14:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 15387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2223:32:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15388,
                        "nodeType": "EmitStatement",
                        "src": "2218:37:97"
                      }
                    ]
                  },
                  "id": 15390,
                  "nodeType": "IfStatement",
                  "src": "2125:141:97",
                  "trueBody": {
                    "id": 15383,
                    "nodeType": "Block",
                    "src": "2138:60:97",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15379,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15361,
                              "src": "2170:8:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15380,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15363,
                              "src": "2180:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15378,
                            "name": "EthWithdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15276,
                            "src": "2157:12:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 15381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2157:30:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15382,
                        "nodeType": "EmitStatement",
                        "src": "2152:35:97"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Withdraw ETH that has successfully exited from the OmiseGO Network\n@dev We do not want to block exit queue if a transfer is unsuccessful, so we don't revert on transfer error.\n     However, if there is not enough gas left for the safeGasStipend, then the EVM _will_ revert with an 'out of gas' error.\n     If this happens, the user should retry with higher gas.\n@param receiver Address of the recipient\n@param amount The amount of ETH to transfer",
            "id": 15392,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 15366,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 15365,
                  "name": "onlyFromNonQuarantinedExitGame",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 15511,
                  "src": "1989:30:97",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1989:30:97"
              }
            ],
            "name": "withdraw",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15361,
                  "name": "receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 15392,
                  "src": "1938:24:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 15360,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1938:15:97",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15363,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 15392,
                  "src": "1964:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15362,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1964:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1937:42:97"
            },
            "returnParameters": {
              "id": 15367,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2020:0:97"
            },
            "scope": 15393,
            "src": "1920:352:97",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 15394,
        "src": "176:2098:97"
      }
    ],
    "src": "0:2275:97"
  },
  "legacyAST": {
    "absolutePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/EthVault.sol",
    "exportedSymbols": {
      "EthVault": [
        15393
      ]
    },
    "id": 15394,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 15264,
        "literals": [
          "solidity",
          "0.5",
          ".11"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:97"
      },
      {
        "absolutePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/Vault.sol",
        "file": "./Vault.sol",
        "id": 15265,
        "nodeType": "ImportDirective",
        "scope": 15394,
        "sourceUnit": 15664,
        "src": "25:21:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/vaults/verifiers/IEthDepositVerifier.sol",
        "file": "./verifiers/IEthDepositVerifier.sol",
        "id": 15266,
        "nodeType": "ImportDirective",
        "scope": 15394,
        "sourceUnit": 15978,
        "src": "47:45:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/framework/PlasmaFramework.sol",
        "file": "../framework/PlasmaFramework.sol",
        "id": 15267,
        "nodeType": "ImportDirective",
        "scope": 15394,
        "sourceUnit": 12153,
        "src": "93:42:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/nocholas/plasma-contracts/plasma_framework/contracts/src/utils/SafeEthTransfer.sol",
        "file": "../utils/SafeEthTransfer.sol",
        "id": 15268,
        "nodeType": "ImportDirective",
        "scope": 15394,
        "sourceUnit": 15132,
        "src": "136:38:97",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 15269,
              "name": "Vault",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15663,
              "src": "197:5:97",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Vault_$15663",
                "typeString": "contract Vault"
              }
            },
            "id": 15270,
            "nodeType": "InheritanceSpecifier",
            "src": "197:5:97"
          }
        ],
        "contractDependencies": [
          14291,
          15663
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 15393,
        "linearizedBaseContracts": [
          15393,
          15663,
          14291
        ],
        "name": "EthVault",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": null,
            "id": 15276,
            "name": "EthWithdrawn",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 15275,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15272,
                  "indexed": true,
                  "name": "receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 15276,
                  "src": "237:24:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15271,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "237:7:97",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15274,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 15276,
                  "src": "271:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15273,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "271:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "227:64:97"
            },
            "src": "209:83:97"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 15282,
            "name": "WithdrawFailed",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 15281,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15278,
                  "indexed": true,
                  "name": "receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 15282,
                  "src": "328:24:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15277,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "328:7:97",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15280,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 15282,
                  "src": "362:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15279,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "362:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "318:64:97"
            },
            "src": "298:85:97"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 15292,
            "name": "DepositCreated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 15291,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15284,
                  "indexed": true,
                  "name": "depositor",
                  "nodeType": "VariableDeclaration",
                  "scope": 15292,
                  "src": "419:25:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15283,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "419:7:97",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15286,
                  "indexed": true,
                  "name": "blknum",
                  "nodeType": "VariableDeclaration",
                  "scope": 15292,
                  "src": "454:22:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15285,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "454:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15288,
                  "indexed": true,
                  "name": "token",
                  "nodeType": "VariableDeclaration",
                  "scope": 15292,
                  "src": "486:21:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 15287,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "486:7:97",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15290,
                  "indexed": false,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 15292,
                  "src": "517:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15289,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "517:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "409:128:97"
            },
            "src": "389:149:97"
          },
          {
            "constant": false,
            "id": 15294,
            "name": "safeGasStipend",
            "nodeType": "VariableDeclaration",
            "scope": 15393,
            "src": "544:29:97",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 15293,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "544:7:97",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15308,
              "nodeType": "Block",
              "src": "670:49:97",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 15306,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 15304,
                      "name": "safeGasStipend",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15294,
                      "src": "680:14:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 15305,
                      "name": "_safeGasStipend",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15298,
                      "src": "697:15:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "680:32:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 15307,
                  "nodeType": "ExpressionStatement",
                  "src": "680:32:97"
                }
              ]
            },
            "documentation": null,
            "id": 15309,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 15301,
                    "name": "_framework",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 15296,
                    "src": "658:10:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PlasmaFramework_$12152",
                      "typeString": "contract PlasmaFramework"
                    }
                  }
                ],
                "id": 15302,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 15300,
                  "name": "Vault",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 15663,
                  "src": "652:5:97",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Vault_$15663_$",
                    "typeString": "type(contract Vault)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "652:17:97"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15299,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15296,
                  "name": "_framework",
                  "nodeType": "VariableDeclaration",
                  "scope": 15309,
                  "src": "592:26:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_PlasmaFramework_$12152",
                    "typeString": "contract PlasmaFramework"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 15295,
                    "name": "PlasmaFramework",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 12152,
                    "src": "592:15:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_PlasmaFramework_$12152",
                      "typeString": "contract PlasmaFramework"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15298,
                  "name": "_safeGasStipend",
                  "nodeType": "VariableDeclaration",
                  "scope": 15309,
                  "src": "620:23:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15297,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "620:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "591:53:97"
            },
            "returnParameters": {
              "id": 15303,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "670:0:97"
            },
            "scope": 15393,
            "src": "580:139:97",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 15358,
              "nodeType": "Block",
              "src": "1020:388:97",
              "statements": [
                {
                  "assignments": [
                    15315
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15315,
                      "name": "depositVerifier",
                      "nodeType": "VariableDeclaration",
                      "scope": 15358,
                      "src": "1030:23:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 15314,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1030:7:97",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 15319,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 15316,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17394,
                        "src": "1056:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_EthVault_$15393",
                          "typeString": "contract super EthVault"
                        }
                      },
                      "id": 15317,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getEffectiveDepositVerifier",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15594,
                      "src": "1056:33:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$_t_address_$",
                        "typeString": "function () view returns (address)"
                      }
                    },
                    "id": 15318,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1056:35:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1030:61:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 15325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 15321,
                          "name": "depositVerifier",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15315,
                          "src": "1109:15:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 15323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1136:1:97",
                              "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": 15322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1128:7:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 15324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1128:10:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "1109:29:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4465706f73697420766572696669657220686173206e6f74206265656e20736574",
                        "id": 15326,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1140:35:97",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_b42006fba6f0d3356831fe67edf97c0fb3b90293873f1de2d7507016ee49ec70",
                          "typeString": "literal_string \"Deposit verifier has not been set\""
                        },
                        "value": "Deposit verifier has not been set"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_b42006fba6f0d3356831fe67edf97c0fb3b90293873f1de2d7507016ee49ec70",
                          "typeString": "literal_string \"Deposit verifier has not been set\""
                        }
                      ],
                      "id": 15320,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        17306,
                        17307
                      ],
                      "referencedDeclaration": 17307,
                      "src": "1101:7:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 15327,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1101:75:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15328,
                  "nodeType": "ExpressionStatement",
                  "src": "1101:75:97"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15333,
                        "name": "_depositTx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15311,
                        "src": "1231:10:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 15334,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17303,
                          "src": "1243:3:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 15335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1243:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 15336,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17303,
                          "src": "1254:3:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 15337,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1254:10:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 15330,
                            "name": "depositVerifier",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15315,
                            "src": "1207:15:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 15329,
                          "name": "IEthDepositVerifier",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15977,
                          "src": "1187:19:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_IEthDepositVerifier_$15977_$",
                            "typeString": "type(contract IEthDepositVerifier)"
                          }
                        },
                        "id": 15331,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1187:36:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IEthDepositVerifier_$15977",
                          "typeString": "contract IEthDepositVerifier"
                        }
                      },
                      "id": 15332,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "verify",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15976,
                      "src": "1187:43:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes_memory_ptr_$_t_uint256_$_t_address_$returns$__$",
                        "typeString": "function (bytes memory,uint256,address) view external"
                      }
                    },
                    "id": 15338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1187:78:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15339,
                  "nodeType": "ExpressionStatement",
                  "src": "1187:78:97"
                },
                {
                  "assignments": [
                    15341
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15341,
                      "name": "blknum",
                      "nodeType": "VariableDeclaration",
                      "scope": 15358,
                      "src": "1275:14:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 15340,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1275:7:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 15346,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15344,
                        "name": "_depositTx",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15311,
                        "src": "1317:10:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 15342,
                        "name": "super",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 17394,
                        "src": "1292:5:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_super$_EthVault_$15393",
                          "typeString": "contract super EthVault"
                        }
                      },
                      "id": 15343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "submitDepositBlock",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15617,
                      "src": "1292:24:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes_memory_ptr_$returns$_t_uint256_$",
                        "typeString": "function (bytes memory) returns (uint256)"
                      }
                    },
                    "id": 15345,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1292:36:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1275:53:97"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 15348,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17303,
                          "src": "1359:3:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 15349,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1359:10:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 15350,
                        "name": "blknum",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15341,
                        "src": "1371:6:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 15352,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1387:1:97",
                            "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": 15351,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "1379:7:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": "address"
                        },
                        "id": 15353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1379:10:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 15354,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 17303,
                          "src": "1391:3:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 15355,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1391:9:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 15347,
                      "name": "DepositCreated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15292,
                      "src": "1344:14:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256,address,uint256)"
                      }
                    },
                    "id": 15356,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1344:57:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 15357,
                  "nodeType": "EmitStatement",
                  "src": "1339:62:97"
                }
              ]
            },
            "documentation": "@notice Allows a user to deposit ETH into the contract\nOnce the deposit is recognized, the owner may transact on the OmiseGO Network\n@param _depositTx RLP-encoded transaction to act as the deposit",
            "id": 15359,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deposit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15312,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15311,
                  "name": "_depositTx",
                  "nodeType": "VariableDeclaration",
                  "scope": 15359,
                  "src": "976:25:97",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 15310,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "976:5:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "975:27:97"
            },
            "returnParameters": {
              "id": 15313,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1020:0:97"
            },
            "scope": 15393,
            "src": "959:449:97",
            "stateMutability": "payable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 15391,
              "nodeType": "Block",
              "src": "2020:252:97",
              "statements": [
                {
                  "assignments": [
                    15369
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 15369,
                      "name": "success",
                      "nodeType": "VariableDeclaration",
                      "scope": 15391,
                      "src": "2030:12:97",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 15368,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2030:4:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 15376,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 15372,
                        "name": "receiver",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15361,
                        "src": "2082:8:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 15373,
                        "name": "amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15363,
                        "src": "2092:6:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 15374,
                        "name": "safeGasStipend",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15294,
                        "src": "2100:14:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 15370,
                        "name": "SafeEthTransfer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 15131,
                        "src": "2045:15:97",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_SafeEthTransfer_$15131_$",
                          "typeString": "type(library SafeEthTransfer)"
                        }
                      },
                      "id": 15371,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transferReturnResult",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15130,
                      "src": "2045:36:97",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_address_payable_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address payable,uint256,uint256) returns (bool)"
                      }
                    },
                    "id": 15375,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2045:70:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2030:85:97"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 15377,
                    "name": "success",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 15369,
                    "src": "2129:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 15389,
                    "nodeType": "Block",
                    "src": "2204:62:97",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15385,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15361,
                              "src": "2238:8:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15386,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15363,
                              "src": "2248:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15384,
                            "name": "WithdrawFailed",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15282,
                            "src": "2223:14:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 15387,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2223:32:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15388,
                        "nodeType": "EmitStatement",
                        "src": "2218:37:97"
                      }
                    ]
                  },
                  "id": 15390,
                  "nodeType": "IfStatement",
                  "src": "2125:141:97",
                  "trueBody": {
                    "id": 15383,
                    "nodeType": "Block",
                    "src": "2138:60:97",
                    "statements": [
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 15379,
                              "name": "receiver",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15361,
                              "src": "2170:8:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 15380,
                              "name": "amount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 15363,
                              "src": "2180:6:97",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 15378,
                            "name": "EthWithdrawn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 15276,
                            "src": "2157:12:97",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 15381,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2157:30:97",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 15382,
                        "nodeType": "EmitStatement",
                        "src": "2152:35:97"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": "@notice Withdraw ETH that has successfully exited from the OmiseGO Network\n@dev We do not want to block exit queue if a transfer is unsuccessful, so we don't revert on transfer error.\n     However, if there is not enough gas left for the safeGasStipend, then the EVM _will_ revert with an 'out of gas' error.\n     If this happens, the user should retry with higher gas.\n@param receiver Address of the recipient\n@param amount The amount of ETH to transfer",
            "id": 15392,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 15366,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 15365,
                  "name": "onlyFromNonQuarantinedExitGame",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 15511,
                  "src": "1989:30:97",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1989:30:97"
              }
            ],
            "name": "withdraw",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 15364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15361,
                  "name": "receiver",
                  "nodeType": "VariableDeclaration",
                  "scope": 15392,
                  "src": "1938:24:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 15360,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1938:15:97",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 15363,
                  "name": "amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 15392,
                  "src": "1964:14:97",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 15362,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1964:7:97",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1937:42:97"
            },
            "returnParameters": {
              "id": 15367,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2020:0:97"
            },
            "scope": 15393,
            "src": "1920:352:97",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 15394,
        "src": "176:2098:97"
      }
    ],
    "src": "0:2275:97"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.11+commit.c082d0b4.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.16",
  "updatedAt": "2020-02-19T07:32:15.002Z",
  "devdoc": {
    "methods": {
      "deposit(bytes)": {
        "params": {
          "_depositTx": "RLP-encoded transaction to act as the deposit"
        }
      },
      "getEffectiveDepositVerifier()": {
        "return": "Contract address of the deposit verifier"
      },
      "setDepositVerifier(address)": {
        "details": "emit SetDepositVerifierCalledWhen one contract is already set, the next one is effective after 2 * MIN_EXIT_PERIOD.     This is to protect deposit transactions already in mempool,     and also make sure user only needs to SE within first week when invalid vault is registered.     *      see: https://github.com/omisego/plasma-contracts/issues/412          https://github.com/omisego/plasma-contracts/issues/173",
        "params": {
          "_verifier": "Address of the verifier contract"
        }
      },
      "withdraw(address,uint256)": {
        "details": "We do not want to block exit queue if a transfer is unsuccessful, so we don't revert on transfer error.     However, if there is not enough gas left for the safeGasStipend, then the EVM _will_ revert with an 'out of gas' error.     If this happens, the user should retry with higher gas.",
        "params": {
          "amount": "The amount of ETH to transfer",
          "receiver": "Address of the recipient"
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "deposit(bytes)": {
        "notice": "Allows a user to deposit ETH into the contract Once the deposit is recognized, the owner may transact on the OmiseGO Network"
      },
      "getEffectiveDepositVerifier()": {
        "notice": "Retrieves the currently effective deposit verifier contract address"
      },
      "setDepositVerifier(address)": {
        "notice": "Sets the deposit verifier contract, which may be called only by the operator"
      },
      "withdraw(address,uint256)": {
        "notice": "Withdraw ETH that has successfully exited from the OmiseGO Network"
      }
    }
  }
}