{
  "contractName": "DepositStates",
  "abi": [],
  "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"methods\":{\"inEndState(DepositUtils.Deposit storage)\":{\"details\":\"This checks on any halt state, regardless of triggering circumstances.\",\"params\":{\"_d\":\"Deposit storage pointer.\"},\"return\":\"True if contract has halted permanently.\"},\"inFunding(DepositUtils.Deposit storage)\":{\"details\":\"This checks on the funding flow happy path, not the fraud path.\",\"params\":{\"_d\":\"Deposit storage pointer.\"},\"return\":\"True if contract is currently in the funding flow else False.\"},\"inRedeemableState(DepositUtils.Deposit storage)\":{\"details\":\"Redemption is available from active and courtesy call.\",\"params\":{\"_d\":\"Deposit storage pointer.\"},\"return\":\"True if available, False otherwise.\"},\"inRedemption(DepositUtils.Deposit storage)\":{\"details\":\"This checks on the redemption flow, not the REDEEMED termination state.\",\"params\":{\"_d\":\"Deposit storage pointer.\"},\"return\":\"True if contract is currently in the redemption flow else False.\"},\"inSignerLiquidation(DepositUtils.Deposit storage)\":{\"details\":\"This could be caused by fraud, or by an unfilled margin call.\",\"params\":{\"_d\":\"Deposit storage pointer.\"},\"return\":\"True if contract is currently in the liquidaton flow else False.\"},\"inStart(DepositUtils.Deposit storage)\":{\"details\":\"This checks on the funding flow happy path, not the fraud path.\",\"params\":{\"_d\":\"Deposit storage pointer.\"},\"return\":\"True if contract is currently in the start state else False.\"}}},\"userdoc\":{\"methods\":{\"inEndState(DepositUtils.Deposit storage)\":{\"notice\":\"Check if the contract has halted.\"},\"inFunding(DepositUtils.Deposit storage)\":{\"notice\":\"Check if the contract is currently in the funding flow.\"},\"inRedeemableState(DepositUtils.Deposit storage)\":{\"notice\":\"Check if the contract is available for a redemption request.\"},\"inRedemption(DepositUtils.Deposit storage)\":{\"notice\":\"Check if the contract is currently in the redepmtion flow.\"},\"inSignerLiquidation(DepositUtils.Deposit storage)\":{\"notice\":\"Check if the contract is currently in the signer liquidation flow.\"},\"inStart(DepositUtils.Deposit storage)\":{\"notice\":\"Check if the contract is currently in the start state (awaiting setup).\"}}}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositStates.sol\":\"DepositStates\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositStates.sol\":{\"keccak256\":\"0x0b407fe4cfa56771c7cb0280e58c23e6c79089bb0f39ec9af83855103cfadce0\",\"urls\":[\"bzz-raw://b06c9ff8c10125cd7dcee7167fd081c95248c97c699a4dfc92bf65d68774f5f1\",\"dweb:/ipfs/QmcdTkj1XtJcPhF9pxr56xV4DW3SxGaaiE5PeGxbYVoHL3\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol\":{\"keccak256\":\"0xc18e532fc384f45567abcf7fbe7bccb885308d63ffeed41d9cf845573a289b98\",\"urls\":[\"bzz-raw://7250e8fce13326313e64d2f24e093bd51c9fdba939b8370f64a1fe820814275b\",\"dweb:/ipfs/QmVfX5w4xN6gxoqbdgPeeTbBvFtxxaNYWSknSY7JDtve2b\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITBTCSystem.sol\":{\"keccak256\":\"0xd8530ab1baddbdfbba6c1b03e547375afe79493b9948d645f94fc0da12ec953b\",\"urls\":[\"bzz-raw://713285a0a4d865a37f3770ce848c20f7277e1540c0a8aa43c2ae0966a7c3df9a\",\"dweb:/ipfs/QmaPiXxvySt9UDmQtVGidh8TQ4XJdxY2X61rEBd8346ELi\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/interfaces/ITokenRecipient.sol\":{\"keccak256\":\"0x4ac6830ad44d0b0d70ebabc60150e9c915c7c0bd0129ef868d5d2cd8da0c32bd\",\"urls\":[\"bzz-raw://a5c6465285add41f07a951f90405800a8802e323ea11e9c7bdb5625ce109c7f7\",\"dweb:/ipfs/QmRf7B4WxsS7gbSwUotgQM633BQc2ye7rhYC1RNVFamBfp\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/FeeRebateToken.sol\":{\"keccak256\":\"0x3d9980b4b18be7e69364b93581d86d08dd2c66fc76b2f9f0af0b4911dc648318\",\"urls\":[\"bzz-raw://751dae1cd68c285a22b513d515074eb6704e11e00ba8196f360d47dc8551dd86\",\"dweb:/ipfs/QmRe5u8bjSd2CMvjgWMzpeea3VdcqEGwAP91zvjxgur8o8\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCConstants.sol\":{\"keccak256\":\"0x74833fb25cf9f24716d563c8fad0fd6172d03577dc85ab4271ca4754285ee915\",\"urls\":[\"bzz-raw://62d37b71546ea52f0c86170b588b021a488785e8570f904f0d2bcfecee93f6a7\",\"dweb:/ipfs/QmePuD631VYpEproKbap8cPXmWeb5mYjU6bwEWnxKCVWbz\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCToken.sol\":{\"keccak256\":\"0x167b07029df8d350996d7f82d853437d1a2562401eeac98037c2eb4c5f295319\",\"urls\":[\"bzz-raw://7d2601ac8dcd5d59b3e479a61262de2162c96ed7ad1cd161331e2e4500b8346a\",\"dweb:/ipfs/QmWVjBSvHFg9W5zsSxgdpNSYKgfLa28fr3mPjjKQaDBxmk\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/VendingMachineAuthority.sol\":{\"keccak256\":\"0x7ad8a2cee5e6bbc187d04b147dc0d2bc2ae12bb8c3680870be9013dd5543bfd6\",\"urls\":[\"bzz-raw://733f2370c788437b0034c40a8df07f4714009769ed8134a9c656e2a103996687\",\"dweb:/ipfs/Qma9LAGQDzyUvsbhLx3FUKRCx3FmnoZuMxG4SUdjLr8bRm\"]},\"@keep-network/keep-ecdsa/contracts/api/IBondedECDSAKeep.sol\":{\"keccak256\":\"0x8f1edc0a2dfb4d167d190989ebc1c4256664e50ec1f82dfaeb25fa5d4a76a35a\",\"urls\":[\"bzz-raw://e815868907cc082fee1e3964be7de12da2161863d68dd1532a74e3a97bacf533\",\"dweb:/ipfs/Qmd8DqutKSwxh38WWA1ydftNkiAxSD9sqxa7qf1asHKA8c\"]},\"@summa-tx/bitcoin-spv-sol/contracts/BTCUtils.sol\":{\"keccak256\":\"0x461cc52e40ba53e646f5c9505b992baa3d5b3c98ae5718561e61b3bc6c726d52\",\"urls\":[\"bzz-raw://90cf2e608b660671642a616ec044e2a39e8ceb7079315b6133ec978c47af9f98\",\"dweb:/ipfs/QmX4hyYS99RYWiQ7BwLXuvQpU5x62YbjJWLgYFwrPkYbzT\"]},\"@summa-tx/bitcoin-spv-sol/contracts/BytesLib.sol\":{\"keccak256\":\"0x43451fdb4c4d55c01122411a4cf89a5c544c2bd4b646ee1d1f306626275324bf\",\"urls\":[\"bzz-raw://db93f07c32fa294d416aaab1b19a205772f2a3fa573fd380e5641e7770193ccf\",\"dweb:/ipfs/QmVE4y8cFKWZGKEfTM9Q3YreAArpMTTALHNr2tcvcNDnbi\"]},\"@summa-tx/bitcoin-spv-sol/contracts/SafeMath.sol\":{\"keccak256\":\"0x22d34c04c68c2a77ee83e2ef3756f6e6bad6ad675560d777e612315d7eb83935\",\"urls\":[\"bzz-raw://b642c61be1d34e153e4f9cc139291fa26f4ecf31a3acc5b960aad20f4f689eeb\",\"dweb:/ipfs/QmWADdVTCSyvtgb76AxFFkAr9h9jbY57Mj5X6xiEqCqmMu\"]},\"@summa-tx/bitcoin-spv-sol/contracts/ValidateSPV.sol\":{\"keccak256\":\"0x9af3b3f36de63e95977f09548617989e391b3c511cf0383ee35cefd5da7d3bfd\",\"urls\":[\"bzz-raw://97ce025c7d18540e4c24578db61cc5e33828be8e9a82b5cb5f46c99212f75ed1\",\"dweb:/ipfs/QmRrdWnd95rgCZzeaNiU4KUcGe1j7oDBj7LatpXhUmjbEE\"]},\"openzeppelin-solidity/contracts/drafts/Counters.sol\":{\"keccak256\":\"0x5eb69360d3441ab2ee799bd7c007cccbffb0896f12b2dfe1456193e2aa180a11\",\"urls\":[\"bzz-raw://072e8b5a1b5acfc2acba9b6fb87d1dc57065aad44572617ad46b014074969eb3\",\"dweb:/ipfs/QmVTDHUriaxBJqiWCWgWC8vYaYYfXSz883LsowzTx1DcpK\"]},\"openzeppelin-solidity/contracts/introspection/ERC165.sol\":{\"keccak256\":\"0xac2eacd7e7762e275442f28f21d821544df5aae2ed7698af13be8c41b7005e2e\",\"urls\":[\"bzz-raw://8bdbefb642e7b08535c66bbf074e576cfef2300cdf910c1e0b211f6393833a28\",\"dweb:/ipfs/QmQhfx2Ufr8a2gFXm3KogL66xGgAuAWMwcamkWFKGG6Vya\"]},\"openzeppelin-solidity/contracts/introspection/IERC165.sol\":{\"keccak256\":\"0x661553e43d7c4fbb2de504e5999fd5c104d367488350ed5bf023031bd1ba5ac5\",\"urls\":[\"bzz-raw://b40442c5b350b57b88a081a1eacd2bac962d4ecc1f029f5447a18986f08f6f14\",\"dweb:/ipfs/QmV7wjtRf11ibUHh4g8JjuhMpy68pPhV95L2y46UBoRfsZ\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x4ccf2d7b51873db1ccfd54ca2adae5eac3b184f9699911ed4490438419f1c690\",\"urls\":[\"bzz-raw://d62d769b2219d5de39013093412623e624fa887f871826ea3bae6052ee893610\",\"dweb:/ipfs/QmV3yVktya1s617QmuzQR2CfuJgUi3dR2xEZY9ecmqZ2G1\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20.sol\":{\"keccak256\":\"0x852793a3c2f86d336a683b30d688ec3dcfc57451af5a2bf5975cda3b7191a901\",\"urls\":[\"bzz-raw://4f5b57664069671648fb81f55b0082faecdf1b2f159eec6b1fa6cef9b7d73bc5\",\"dweb:/ipfs/QmcyytaLs7zFdb4Uu7C5PmQRhQdB3wA3fUdkV6mkYfdDFH\"]},\"openzeppelin-solidity/contracts/token/ERC20/ERC20Detailed.sol\":{\"keccak256\":\"0xc61b3603089b09a730d8ca72e9133a496cc4405da40e9b87c12f073245d774bf\",\"urls\":[\"bzz-raw://de8bb0003d53de236913f0e0102e7a9d015e02098f2495edd000f207fe2be2f4\",\"dweb:/ipfs/QmbtwNwAJEehWWL7yGGyyMoenQvcqtz91pqLgQPpLRoLYC\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x90e8c2521653bbb1768b05889c5760031e688d9cd361f167489b89215e201b95\",\"urls\":[\"bzz-raw://d0abb99bb8bfc2bc0a89902b8ed1dc0442ad08cc78cee64c291b3df6a27bcccc\",\"dweb:/ipfs/QmP5NaEwZthQeM2ESz4WTT3osrP7jhbvu7ocbttBi2JAw6\"]},\"openzeppelin-solidity/contracts/token/ERC721/ERC721.sol\":{\"keccak256\":\"0xf151df411bbf4eaef1fc8e8480cd10c2cd985f1a36517e63981517610213efc1\",\"urls\":[\"bzz-raw://2a277b3cc3a1a03af5c039bc75cd16bb2d23b529cb2564cc0bea1b1e0eb4dd68\",\"dweb:/ipfs/QmNRxggY8qmjjuLnxggRqE8uBueuCktLwi9YYHagWoaEJ8\"]},\"openzeppelin-solidity/contracts/token/ERC721/ERC721Metadata.sol\":{\"keccak256\":\"0xe5e28b1a405164faa98f8ecd8ed2b00907b89e3d58b2b2bb8ac8b12bc5714489\",\"urls\":[\"bzz-raw://0d5d3f0caa7e7ec91f8a2894e1a6a3513a0c79aa91a498ebf8fdbdd07c12286f\",\"dweb:/ipfs/QmP7r4jQMRxXb5JHy5V9bgMz5FmTezcSDd7ivyzJN88pTR\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0xce48937a8007c580b8e2e35705738c922dd17540de89ebee6df06d2917a3f9fc\",\"urls\":[\"bzz-raw://1d117265103ee3efcd454d3aafb3e79a115f9bca6dec78a1229558eb30d14d05\",\"dweb:/ipfs/QmTm5Z1c7zzPiG3Cfj1eBMB23AeiEFGgvmTFQVaeEWXVCw\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721Metadata.sol\":{\"keccak256\":\"0x2b2b99dc7fe8fcd1f9427d00822b99cbc683dc21f5dd7532bd7e2281fd2c2ca2\",\"urls\":[\"bzz-raw://a8024c00e34efaf328f9592e76823c79f25fa0f6006bdf4a1e7fea204afd4773\",\"dweb:/ipfs/QmZns9jTr7843njq3J2iL2LLoWXK5mdzN1bDGd9GL3ahhD\"]},\"openzeppelin-solidity/contracts/token/ERC721/IERC721Receiver.sol\":{\"keccak256\":\"0xadbfb7028fb0f851dc848a48b9e54e7c89ffd2c2edc12fa4ba9bb383dfaa83d9\",\"urls\":[\"bzz-raw://90dceab42713246639100b87d6650037d68e4a2ab2dd4b5768c3ed35d6b3a4a0\",\"dweb:/ipfs/QmQ42UW5nchMoYP9bU9F1AJga5chG8j92fCPkURpiDKsCu\"]},\"openzeppelin-solidity/contracts/utils/Address.sol\":{\"keccak256\":\"0xf3358e5819ca73357abd6c90bdfffd0474af54364897f6b3e3234c4b71fbe9a1\",\"urls\":[\"bzz-raw://75ae8d04454d1511a2ed986cc8585736f05c5c25280683b3d24712a9f414a4bf\",\"dweb:/ipfs/Qmb3kNCoBUZdah1AgBBD4zMk898j5Qw8ahT1w5cCMYp5Y3\"]}},\"version\":1}",
  "bytecode": "0x610793610026600b82828239805160001a60731461001957fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600436106101ce5760003560e01c80639df1b34611610103578063c28eab40116100a1578063e0dfa4b31161007b578063e0dfa4b314610523578063ef2bd3d014610540578063f09911ee1461055d578063fb0611ff14610587576101ce565b8063c28eab40146104bf578063cb4536ad146104e9578063dcf5c88c14610506576101ce565b8063afb8e293116100dd578063afb8e2931461044b578063b0b6855a14610468578063b5e6a0a014610485578063b65fb6cb146104a2576101ce565b80639df1b346146103e7578063a2f9a98014610404578063a6fd0b5614610421576101ce565b806348312fa311610170578063652d34301161014a578063652d3430146103595780636fdbb3c414610376578063761275bf146103a05780638be5e97f146103bd576101ce565b806348312fa3146102f55780635a332575146103125780635dd33d991461032f576101ce565b8063171b2a05116101ac578063171b2a051461025a57806327f2744914610284578063375ec420146102a1578063429fcb0d146102cb576101ce565b8063056256a8146101d35780630f2c6355146101ff57806316cddf4e14610230575b600080fd5b8180156101df57600080fd5b506101fd600480360360208110156101f657600080fd5b50356105a4565b005b61021c6004803603602081101561021557600080fd5b50356105c6565b604080519115158252519081900360200190f35b81801561023c57600080fd5b506101fd6004803603602081101561025357600080fd5b50356105e6565b81801561026657600080fd5b506101fd6004803603602081101561027d57600080fd5b50356105ed565b61021c6004803603602081101561029a57600080fd5b50356105f4565b8180156102ad57600080fd5b506101fd600480360360208110156102c457600080fd5b50356105fd565b8180156102d757600080fd5b506101fd600480360360208110156102ee57600080fd5b5035610604565b61021c6004803603602081101561030b57600080fd5b503561060b565b61021c6004803603602081101561032857600080fd5b5035610634565b81801561033b57600080fd5b506101fd6004803603602081101561035257600080fd5b5035610671565b61021c6004803603602081101561036f57600080fd5b5035610678565b81801561038257600080fd5b506101fd6004803603602081101561039957600080fd5b5035610680565b61021c600480360360208110156103b657600080fd5b5035610687565b8180156103c957600080fd5b506101fd600480360360208110156103e057600080fd5b5035610690565b61021c600480360360208110156103fd57600080fd5b5035610697565b61021c6004803603602081101561041a57600080fd5b50356106a0565b81801561042d57600080fd5b506101fd6004803603602081101561044457600080fd5b50356106a9565b61021c6004803603602081101561046157600080fd5b50356106b0565b61021c6004803603602081101561047e57600080fd5b50356106d4565b61021c6004803603602081101561049b57600080fd5b50356106dd565b61021c600480360360208110156104b857600080fd5b50356106e6565b8180156104cb57600080fd5b506101fd600480360360208110156104e257600080fd5b50356106ef565b61021c600480360360208110156104ff57600080fd5b50356106f6565b61021c6004803603602081101561051c57600080fd5b50356106ff565b61021c6004803603602081101561053957600080fd5b5035610708565b61021c6004803603602081101561055657600080fd5b503561072b565b81801561056957600080fd5b506101fd6004803603602081101561058057600080fd5b5035610734565b61021c6004803603602081101561059d57600080fd5b503561073b565b600b5b81600401601c6101000a81548160ff021916908360ff16021790555050565b600060045b6004830154600160e01b900460ff9081169116149050919050565b60016105a7565b60086105a7565b600060026105cb565b60046105a7565b60056105a7565b600481015460009060ff600160e01b909104166001148061062e575060026105cb565b92915050565b600481015460009060ff600160e01b90910416600b14806106645750600482015460ff600160e01b909104166007145b8061062e575060036105cb565b600a6105a7565b6000806105cb565b60036105a7565b600060086105cb565b60026105a7565b6000600b6105cb565b600060096105cb565b60066105a7565b6000600480830154600160e01b900460ff9081169116148061062e575060086105cb565b600060076105cb565b600060016105cb565b600060036105cb565b60096105a7565b600060066105cb565b6000600a6105cb565b600481015460009060ff600160e01b909104166005148061062e575060066105cb565b600060056105cb565b60076105a7565b600481015460009060ff600160e01b90910416600a148061062e575060096105cb56fea265627a7a72315820de742ec8f1326b934cadea59d1d74a0cfef1831c410ff0deda46ba1e3742527464736f6c63430005110032",
  "deployedBytecode": "0x73000000000000000000000000000000000000000030146080604052600436106101ce5760003560e01c80639df1b34611610103578063c28eab40116100a1578063e0dfa4b31161007b578063e0dfa4b314610523578063ef2bd3d014610540578063f09911ee1461055d578063fb0611ff14610587576101ce565b8063c28eab40146104bf578063cb4536ad146104e9578063dcf5c88c14610506576101ce565b8063afb8e293116100dd578063afb8e2931461044b578063b0b6855a14610468578063b5e6a0a014610485578063b65fb6cb146104a2576101ce565b80639df1b346146103e7578063a2f9a98014610404578063a6fd0b5614610421576101ce565b806348312fa311610170578063652d34301161014a578063652d3430146103595780636fdbb3c414610376578063761275bf146103a05780638be5e97f146103bd576101ce565b806348312fa3146102f55780635a332575146103125780635dd33d991461032f576101ce565b8063171b2a05116101ac578063171b2a051461025a57806327f2744914610284578063375ec420146102a1578063429fcb0d146102cb576101ce565b8063056256a8146101d35780630f2c6355146101ff57806316cddf4e14610230575b600080fd5b8180156101df57600080fd5b506101fd600480360360208110156101f657600080fd5b50356105a4565b005b61021c6004803603602081101561021557600080fd5b50356105c6565b604080519115158252519081900360200190f35b81801561023c57600080fd5b506101fd6004803603602081101561025357600080fd5b50356105e6565b81801561026657600080fd5b506101fd6004803603602081101561027d57600080fd5b50356105ed565b61021c6004803603602081101561029a57600080fd5b50356105f4565b8180156102ad57600080fd5b506101fd600480360360208110156102c457600080fd5b50356105fd565b8180156102d757600080fd5b506101fd600480360360208110156102ee57600080fd5b5035610604565b61021c6004803603602081101561030b57600080fd5b503561060b565b61021c6004803603602081101561032857600080fd5b5035610634565b81801561033b57600080fd5b506101fd6004803603602081101561035257600080fd5b5035610671565b61021c6004803603602081101561036f57600080fd5b5035610678565b81801561038257600080fd5b506101fd6004803603602081101561039957600080fd5b5035610680565b61021c600480360360208110156103b657600080fd5b5035610687565b8180156103c957600080fd5b506101fd600480360360208110156103e057600080fd5b5035610690565b61021c600480360360208110156103fd57600080fd5b5035610697565b61021c6004803603602081101561041a57600080fd5b50356106a0565b81801561042d57600080fd5b506101fd6004803603602081101561044457600080fd5b50356106a9565b61021c6004803603602081101561046157600080fd5b50356106b0565b61021c6004803603602081101561047e57600080fd5b50356106d4565b61021c6004803603602081101561049b57600080fd5b50356106dd565b61021c600480360360208110156104b857600080fd5b50356106e6565b8180156104cb57600080fd5b506101fd600480360360208110156104e257600080fd5b50356106ef565b61021c600480360360208110156104ff57600080fd5b50356106f6565b61021c6004803603602081101561051c57600080fd5b50356106ff565b61021c6004803603602081101561053957600080fd5b5035610708565b61021c6004803603602081101561055657600080fd5b503561072b565b81801561056957600080fd5b506101fd6004803603602081101561058057600080fd5b5035610734565b61021c6004803603602081101561059d57600080fd5b503561073b565b600b5b81600401601c6101000a81548160ff021916908360ff16021790555050565b600060045b6004830154600160e01b900460ff9081169116149050919050565b60016105a7565b60086105a7565b600060026105cb565b60046105a7565b60056105a7565b600481015460009060ff600160e01b909104166001148061062e575060026105cb565b92915050565b600481015460009060ff600160e01b90910416600b14806106645750600482015460ff600160e01b909104166007145b8061062e575060036105cb565b600a6105a7565b6000806105cb565b60036105a7565b600060086105cb565b60026105a7565b6000600b6105cb565b600060096105cb565b60066105a7565b6000600480830154600160e01b900460ff9081169116148061062e575060086105cb565b600060076105cb565b600060016105cb565b600060036105cb565b60096105a7565b600060066105cb565b6000600a6105cb565b600481015460009060ff600160e01b909104166005148061062e575060066105cb565b600060056105cb565b60076105a7565b600481015460009060ff600160e01b90910416600a148061062e575060096105cb56fea265627a7a72315820de742ec8f1326b934cadea59d1d74a0cfef1831c410ff0deda46ba1e3742527464736f6c63430005110032",
  "sourceMap": "75:7694:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24",
  "deployedSourceMap": "75:7694:6:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7643:124;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7643:124:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7643:124:6;;:::i;:::-;;4519:171;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4519:171:6;;:::i;:::-;;;;;;;;;;;;;;;;;;6115:144;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6115:144:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6115:144:6;;:::i;7165:129::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7165:129:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7165:129:6;;:::i;4117:208::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4117:208:6;;:::i;6569:116::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6569:116:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6569:116:6;;:::i;6691:172::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6691:172:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6691:172:6;;:::i;925:264::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;925:264:6;;:::i;2623:297::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2623:297:6;;:::i;7477:160::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7477:160:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7477:160:6;;:::i;3735:171::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3735:171:6;;:::i;6436:127::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6436:127:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6436:127:6;;:::i;5311:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5311:184:6;;:::i;6265:165::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6265:165:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6265:165:6;;:::i;5930:179::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5930:179:6;;:::i;5501:214::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5501:214:6;;:::i;6869:164::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6869:164:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6869:164:6;;:::i;3183:244::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3183:244:6;;:::i;5130:175::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5130:175:6;;:::i;3912:199::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3912:199:6;;:::i;4331:182::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4331:182:6;;:::i;7300:171::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7300:171:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7300:171:6;;:::i;4917:207::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4917:207:6;;:::i;5721:203::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5721:203:6;;:::i;2080:286::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2080:286:6;;:::i;4696:215::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4696:215:6;;:::i;7039:120::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7039:120:6;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7039:120:6;;:::i;1494:279::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1494:279:6;;:::i;7643:124::-;7742:17;7736:24;7718:2;:15;;;:42;;;;;;;;;;;;;;;;;;7643:124;:::o;4519:171::-;4617:4;4669:13;4663:20;4644:15;;;;-1:-1:-1;;;4644:15:6;;:39;:15;;;:39;;;;-1:-1:-1;4519:171:6;;;:::o;6115:144::-;6223:28;6217:35;;7165:129;7266:20;7260:27;;4117:208;4232:4;4284:33;4278:40;;6569:116;6664:13;6658:20;;6691:172;6819:36;6813:43;;925:264;1052:15;;;;1024:4;;1052:54;-1:-1:-1;;;1052:15:6;;;;1077:28;1052:54;;:129;;-1:-1:-1;1147:33:6;1141:40;;1052:129;1044:138;925:264;-1:-1:-1;;925:264:6:o;2623:297::-;2751:15;;;;2723:4;;2751:43;-1:-1:-1;;;2751:15:6;;;;2776:17;2751:43;;:100;;-1:-1:-1;2810:15:6;;;;:41;-1:-1:-1;;;2810:15:6;;;;2835;2810:41;2751:100;:161;;;-1:-1:-1;2892:19:6;2886:26;;7477:160;7599:30;7593:37;;3735:171;3832:4;;3879:19;;6436:127;6536:19;6530:26;;5311:184;5415:4;5467:20;5461:27;;6265:165;6389:33;6383:40;;5930:179;6032:4;6084:17;6078:24;;5501:214;5619:4;5671:36;5665:43;;6869:164;6993:32;6987:39;;3183:244;3290:4;3343:13;3318:15;;;;-1:-1:-1;;;3318:15:6;;:39;:15;;;:39;;;;:101;;-1:-1:-1;3398:20:6;3392:27;;5130:175;5230:4;5282:15;5276:22;;3912:199;4023:4;4075:28;4069:35;;4331:182;4434:4;4486:19;4480:26;;7300:171;7427:36;7421:43;;4917:207;5032:4;5084:32;5078:39;;5721:203;5834:4;5886:30;5880:37;;2080:286;2210:15;;;;2182:4;;2210:74;-1:-1:-1;;;2210:15:6;;;;2247:36;2210:74;;:148;;-1:-1:-1;2325:32:6;2319:39;;4696:215;4815:4;4867:36;4861:43;;7039:120;7136:15;7130:22;;1494:279;1631:15;;;;1603:4;;1631:56;-1:-1:-1;;;1631:15:6;;;;1656:30;1631:56;;:134;;-1:-1:-1;1728:36:6;1722:43;",
  "source": "pragma solidity 0.5.17;\n\nimport {DepositUtils} from \"./DepositUtils.sol\";\n\nlibrary DepositStates {\n    enum States {\n        // DOES NOT EXIST YET\n        START,\n        // FUNDING FLOW\n        AWAITING_SIGNER_SETUP,\n        AWAITING_BTC_FUNDING_PROOF,\n        // FAILED SETUP\n        FAILED_SETUP,\n        // ACTIVE\n        ACTIVE, // includes courtesy call\n        // REDEMPTION FLOW\n        AWAITING_WITHDRAWAL_SIGNATURE,\n        AWAITING_WITHDRAWAL_PROOF,\n        REDEEMED,\n        // SIGNER LIQUIDATION FLOW\n        COURTESY_CALL,\n        FRAUD_LIQUIDATION_IN_PROGRESS,\n        LIQUIDATION_IN_PROGRESS,\n        LIQUIDATED\n    }\n\n    /// @notice     Check if the contract is currently in the funding flow.\n    /// @dev        This checks on the funding flow happy path, not the fraud path.\n    /// @param _d   Deposit storage pointer.\n    /// @return     True if contract is currently in the funding flow else False.\n    function inFunding(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return (_d.currentState == uint8(States.AWAITING_SIGNER_SETUP) ||\n            _d.currentState == uint8(States.AWAITING_BTC_FUNDING_PROOF));\n    }\n\n    /// @notice     Check if the contract is currently in the signer liquidation flow.\n    /// @dev        This could be caused by fraud, or by an unfilled margin call.\n    /// @param _d   Deposit storage pointer.\n    /// @return     True if contract is currently in the liquidaton flow else False.\n    function inSignerLiquidation(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return (_d.currentState == uint8(States.LIQUIDATION_IN_PROGRESS) ||\n            _d.currentState == uint8(States.FRAUD_LIQUIDATION_IN_PROGRESS));\n    }\n\n    /// @notice     Check if the contract is currently in the redepmtion flow.\n    /// @dev        This checks on the redemption flow, not the REDEEMED termination state.\n    /// @param _d   Deposit storage pointer.\n    /// @return     True if contract is currently in the redemption flow else False.\n    function inRedemption(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return (_d.currentState ==\n            uint8(States.AWAITING_WITHDRAWAL_SIGNATURE) ||\n            _d.currentState == uint8(States.AWAITING_WITHDRAWAL_PROOF));\n    }\n\n    /// @notice     Check if the contract has halted.\n    /// @dev        This checks on any halt state, regardless of triggering circumstances.\n    /// @param _d   Deposit storage pointer.\n    /// @return     True if contract has halted permanently.\n    function inEndState(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return (_d.currentState == uint8(States.LIQUIDATED) ||\n            _d.currentState == uint8(States.REDEEMED) ||\n            _d.currentState == uint8(States.FAILED_SETUP));\n    }\n\n    /// @notice     Check if the contract is available for a redemption request.\n    /// @dev        Redemption is available from active and courtesy call.\n    /// @param _d   Deposit storage pointer.\n    /// @return     True if available, False otherwise.\n    function inRedeemableState(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return (_d.currentState == uint8(States.ACTIVE) ||\n            _d.currentState == uint8(States.COURTESY_CALL));\n    }\n\n    /// @notice     Check if the contract is currently in the start state (awaiting setup).\n    /// @dev        This checks on the funding flow happy path, not the fraud path.\n    /// @param _d   Deposit storage pointer.\n    /// @return     True if contract is currently in the start state else False.\n    function inStart(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return (_d.currentState == uint8(States.START));\n    }\n\n    function inAwaitingSignerSetup(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return _d.currentState == uint8(States.AWAITING_SIGNER_SETUP);\n    }\n\n    function inAwaitingBTCFundingProof(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return _d.currentState == uint8(States.AWAITING_BTC_FUNDING_PROOF);\n    }\n\n    function inFailedSetup(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return _d.currentState == uint8(States.FAILED_SETUP);\n    }\n\n    function inActive(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return _d.currentState == uint8(States.ACTIVE);\n    }\n\n    function inAwaitingWithdrawalSignature(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return _d.currentState == uint8(States.AWAITING_WITHDRAWAL_SIGNATURE);\n    }\n\n    function inAwaitingWithdrawalProof(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return _d.currentState == uint8(States.AWAITING_WITHDRAWAL_PROOF);\n    }\n\n    function inRedeemed(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return _d.currentState == uint8(States.REDEEMED);\n    }\n\n    function inCourtesyCall(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return _d.currentState == uint8(States.COURTESY_CALL);\n    }\n\n    function inFraudLiquidationInProgress(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return _d.currentState == uint8(States.FRAUD_LIQUIDATION_IN_PROGRESS);\n    }\n\n    function inLiquidationInProgress(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return _d.currentState == uint8(States.LIQUIDATION_IN_PROGRESS);\n    }\n\n    function inLiquidated(DepositUtils.Deposit storage _d)\n        external\n        view\n        returns (bool)\n    {\n        return _d.currentState == uint8(States.LIQUIDATED);\n    }\n\n    function setAwaitingSignerSetup(DepositUtils.Deposit storage _d) external {\n        _d.currentState = uint8(States.AWAITING_SIGNER_SETUP);\n    }\n\n    function setAwaitingBTCFundingProof(DepositUtils.Deposit storage _d)\n        external\n    {\n        _d.currentState = uint8(States.AWAITING_BTC_FUNDING_PROOF);\n    }\n\n    function setFailedSetup(DepositUtils.Deposit storage _d) external {\n        _d.currentState = uint8(States.FAILED_SETUP);\n    }\n\n    function setActive(DepositUtils.Deposit storage _d) external {\n        _d.currentState = uint8(States.ACTIVE);\n    }\n\n    function setAwaitingWithdrawalSignature(DepositUtils.Deposit storage _d)\n        external\n    {\n        _d.currentState = uint8(States.AWAITING_WITHDRAWAL_SIGNATURE);\n    }\n\n    function setAwaitingWithdrawalProof(DepositUtils.Deposit storage _d)\n        external\n    {\n        _d.currentState = uint8(States.AWAITING_WITHDRAWAL_PROOF);\n    }\n\n    function setRedeemed(DepositUtils.Deposit storage _d) external {\n        _d.currentState = uint8(States.REDEEMED);\n    }\n\n    function setCourtesyCall(DepositUtils.Deposit storage _d) external {\n        _d.currentState = uint8(States.COURTESY_CALL);\n    }\n\n    function setFraudLiquidationInProgress(DepositUtils.Deposit storage _d)\n        external\n    {\n        _d.currentState = uint8(States.FRAUD_LIQUIDATION_IN_PROGRESS);\n    }\n\n    function setLiquidationInProgress(DepositUtils.Deposit storage _d)\n        external\n    {\n        _d.currentState = uint8(States.LIQUIDATION_IN_PROGRESS);\n    }\n\n    function setLiquidated(DepositUtils.Deposit storage _d) external {\n        _d.currentState = uint8(States.LIQUIDATED);\n    }\n}\n",
  "sourcePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositStates.sol",
  "ast": {
    "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositStates.sol",
    "exportedSymbols": {
      "DepositStates": [
        3778
      ]
    },
    "id": 3779,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3271,
        "literals": [
          "solidity",
          "0.5",
          ".17"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:6"
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol",
        "file": "./DepositUtils.sol",
        "id": 3273,
        "nodeType": "ImportDirective",
        "scope": 3779,
        "sourceUnit": 5104,
        "src": "25:48:6",
        "symbolAliases": [
          {
            "foreign": 3272,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "documentation": null,
        "fullyImplemented": true,
        "id": 3778,
        "linearizedBaseContracts": [
          3778
        ],
        "name": "DepositStates",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "DepositStates.States",
            "id": 3286,
            "members": [
              {
                "id": 3274,
                "name": "START",
                "nodeType": "EnumValue",
                "src": "155:5:6"
              },
              {
                "id": 3275,
                "name": "AWAITING_SIGNER_SETUP",
                "nodeType": "EnumValue",
                "src": "194:21:6"
              },
              {
                "id": 3276,
                "name": "AWAITING_BTC_FUNDING_PROOF",
                "nodeType": "EnumValue",
                "src": "225:26:6"
              },
              {
                "id": 3277,
                "name": "FAILED_SETUP",
                "nodeType": "EnumValue",
                "src": "285:12:6"
              },
              {
                "id": 3278,
                "name": "ACTIVE",
                "nodeType": "EnumValue",
                "src": "325:6:6"
              },
              {
                "id": 3279,
                "name": "AWAITING_WITHDRAWAL_SIGNATURE",
                "nodeType": "EnumValue",
                "src": "394:29:6"
              },
              {
                "id": 3280,
                "name": "AWAITING_WITHDRAWAL_PROOF",
                "nodeType": "EnumValue",
                "src": "433:25:6"
              },
              {
                "id": 3281,
                "name": "REDEEMED",
                "nodeType": "EnumValue",
                "src": "468:8:6"
              },
              {
                "id": 3282,
                "name": "COURTESY_CALL",
                "nodeType": "EnumValue",
                "src": "521:13:6"
              },
              {
                "id": 3283,
                "name": "FRAUD_LIQUIDATION_IN_PROGRESS",
                "nodeType": "EnumValue",
                "src": "544:29:6"
              },
              {
                "id": 3284,
                "name": "LIQUIDATION_IN_PROGRESS",
                "nodeType": "EnumValue",
                "src": "583:23:6"
              },
              {
                "id": 3285,
                "name": "LIQUIDATED",
                "nodeType": "EnumValue",
                "src": "616:10:6"
              }
            ],
            "name": "States",
            "nodeType": "EnumDefinition",
            "src": "103:529:6"
          },
          {
            "body": {
              "id": 3310,
              "nodeType": "Block",
              "src": "1034:155:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3307,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 3299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3293,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3288,
                              "src": "1052:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 3294,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3840,
                            "src": "1052:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3296,
                                  "name": "States",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3286,
                                  "src": "1077:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                                    "typeString": "type(enum DepositStates.States)"
                                  }
                                },
                                "id": 3297,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "AWAITING_SIGNER_SETUP",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1077:28:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              ],
                              "id": 3295,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1071:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": "uint8"
                            },
                            "id": 3298,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1071:35:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "1052:54:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 3306,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3300,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3288,
                              "src": "1122:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 3301,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3840,
                            "src": "1122:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3303,
                                  "name": "States",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3286,
                                  "src": "1147:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                                    "typeString": "type(enum DepositStates.States)"
                                  }
                                },
                                "id": 3304,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "AWAITING_BTC_FUNDING_PROOF",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1147:33:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              ],
                              "id": 3302,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1141:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": "uint8"
                            },
                            "id": 3305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1141:40:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "1122:59:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1052:129:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 3308,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1051:131:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3292,
                  "id": 3309,
                  "nodeType": "Return",
                  "src": "1044:138:6"
                }
              ]
            },
            "documentation": "@notice     Check if the contract is currently in the funding flow.\n @dev        This checks on the funding flow happy path, not the fraud path.\n @param _d   Deposit storage pointer.\n @return     True if contract is currently in the funding flow else False.",
            "id": 3311,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inFunding",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3289,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3288,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3311,
                  "src": "944:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3287,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "944:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "943:33:6"
            },
            "returnParameters": {
              "id": 3292,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3291,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3311,
                  "src": "1024:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3290,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1024:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1023:6:6"
            },
            "scope": 3778,
            "src": "925:264:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3335,
              "nodeType": "Block",
              "src": "1613:160:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3332,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 3324,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3318,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3313,
                              "src": "1631:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 3319,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3840,
                            "src": "1631:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3321,
                                  "name": "States",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3286,
                                  "src": "1656:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                                    "typeString": "type(enum DepositStates.States)"
                                  }
                                },
                                "id": 3322,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "LIQUIDATION_IN_PROGRESS",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1656:30:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              ],
                              "id": 3320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1650:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": "uint8"
                            },
                            "id": 3323,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1650:37:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "1631:56:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 3331,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3325,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3313,
                              "src": "1703:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 3326,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3840,
                            "src": "1703:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3328,
                                  "name": "States",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3286,
                                  "src": "1728:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                                    "typeString": "type(enum DepositStates.States)"
                                  }
                                },
                                "id": 3329,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "FRAUD_LIQUIDATION_IN_PROGRESS",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1728:36:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              ],
                              "id": 3327,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1722:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": "uint8"
                            },
                            "id": 3330,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1722:43:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "1703:62:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1631:134:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 3333,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "1630:136:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3317,
                  "id": 3334,
                  "nodeType": "Return",
                  "src": "1623:143:6"
                }
              ]
            },
            "documentation": "@notice     Check if the contract is currently in the signer liquidation flow.\n @dev        This could be caused by fraud, or by an unfilled margin call.\n @param _d   Deposit storage pointer.\n @return     True if contract is currently in the liquidaton flow else False.",
            "id": 3336,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inSignerLiquidation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3314,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3313,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3336,
                  "src": "1523:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3312,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "1523:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1522:33:6"
            },
            "returnParameters": {
              "id": 3317,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3316,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3336,
                  "src": "1603:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3315,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1603:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1602:6:6"
            },
            "scope": 3778,
            "src": "1494:279:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3360,
              "nodeType": "Block",
              "src": "2192:174:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3357,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 3349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3343,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3338,
                              "src": "2210:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 3344,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3840,
                            "src": "2210:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3346,
                                  "name": "States",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3286,
                                  "src": "2247:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                                    "typeString": "type(enum DepositStates.States)"
                                  }
                                },
                                "id": 3347,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "AWAITING_WITHDRAWAL_SIGNATURE",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2247:36:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              ],
                              "id": 3345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2241:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": "uint8"
                            },
                            "id": 3348,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2241:43:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "2210:74:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 3356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3350,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3338,
                              "src": "2300:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 3351,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3840,
                            "src": "2300:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3353,
                                  "name": "States",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3286,
                                  "src": "2325:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                                    "typeString": "type(enum DepositStates.States)"
                                  }
                                },
                                "id": 3354,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "AWAITING_WITHDRAWAL_PROOF",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2325:32:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              ],
                              "id": 3352,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2319:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": "uint8"
                            },
                            "id": 3355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2319:39:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "2300:58:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2210:148:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 3358,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "2209:150:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3342,
                  "id": 3359,
                  "nodeType": "Return",
                  "src": "2202:157:6"
                }
              ]
            },
            "documentation": "@notice     Check if the contract is currently in the redepmtion flow.\n @dev        This checks on the redemption flow, not the REDEEMED termination state.\n @param _d   Deposit storage pointer.\n @return     True if contract is currently in the redemption flow else False.",
            "id": 3361,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inRedemption",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3339,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3338,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3361,
                  "src": "2102:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3337,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "2102:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2101:33:6"
            },
            "returnParameters": {
              "id": 3342,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3341,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3361,
                  "src": "2182:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3340,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2182:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2181:6:6"
            },
            "scope": 3778,
            "src": "2080:286:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3393,
              "nodeType": "Block",
              "src": "2733:187:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3390,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 3382,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 3374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3368,
                                "name": "_d",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3363,
                                "src": "2751:2:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              },
                              "id": 3369,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "currentState",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3840,
                              "src": "2751:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3371,
                                    "name": "States",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3286,
                                    "src": "2776:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                                      "typeString": "type(enum DepositStates.States)"
                                    }
                                  },
                                  "id": 3372,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "LIQUIDATED",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2776:17:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_States_$3286",
                                    "typeString": "enum DepositStates.States"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_States_$3286",
                                    "typeString": "enum DepositStates.States"
                                  }
                                ],
                                "id": 3370,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2770:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": "uint8"
                              },
                              "id": 3373,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2770:24:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "2751:43:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            "id": 3381,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3375,
                                "name": "_d",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3363,
                                "src": "2810:2:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                  "typeString": "struct DepositUtils.Deposit storage pointer"
                                }
                              },
                              "id": 3376,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "currentState",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3840,
                              "src": "2810:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3378,
                                    "name": "States",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3286,
                                    "src": "2835:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                                      "typeString": "type(enum DepositStates.States)"
                                    }
                                  },
                                  "id": 3379,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "REDEEMED",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2835:15:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_States_$3286",
                                    "typeString": "enum DepositStates.States"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_enum$_States_$3286",
                                    "typeString": "enum DepositStates.States"
                                  }
                                ],
                                "id": 3377,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2829:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint8_$",
                                  "typeString": "type(uint8)"
                                },
                                "typeName": "uint8"
                              },
                              "id": 3380,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2829:22:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "2810:41:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "2751:100:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 3389,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3383,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3363,
                              "src": "2867:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 3384,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3840,
                            "src": "2867:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3386,
                                  "name": "States",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3286,
                                  "src": "2892:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                                    "typeString": "type(enum DepositStates.States)"
                                  }
                                },
                                "id": 3387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "FAILED_SETUP",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2892:19:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              ],
                              "id": 3385,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2886:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": "uint8"
                            },
                            "id": 3388,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2886:26:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "2867:45:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2751:161:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 3391,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "2750:163:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3367,
                  "id": 3392,
                  "nodeType": "Return",
                  "src": "2743:170:6"
                }
              ]
            },
            "documentation": "@notice     Check if the contract has halted.\n @dev        This checks on any halt state, regardless of triggering circumstances.\n @param _d   Deposit storage pointer.\n @return     True if contract has halted permanently.",
            "id": 3394,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inEndState",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3364,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3363,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3394,
                  "src": "2643:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3362,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "2643:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2642:33:6"
            },
            "returnParameters": {
              "id": 3367,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3366,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3394,
                  "src": "2723:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3365,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2723:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2722:6:6"
            },
            "scope": 3778,
            "src": "2623:297:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3418,
              "nodeType": "Block",
              "src": "3300:127:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 3407,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3401,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3396,
                              "src": "3318:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 3402,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3840,
                            "src": "3318:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3404,
                                  "name": "States",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3286,
                                  "src": "3343:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                                    "typeString": "type(enum DepositStates.States)"
                                  }
                                },
                                "id": 3405,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "ACTIVE",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3343:13:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              ],
                              "id": 3403,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3337:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": "uint8"
                            },
                            "id": 3406,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3337:20:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "3318:39:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 3414,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3408,
                              "name": "_d",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3396,
                              "src": "3373:2:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                                "typeString": "struct DepositUtils.Deposit storage pointer"
                              }
                            },
                            "id": 3409,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "currentState",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3840,
                            "src": "3373:15:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3411,
                                  "name": "States",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3286,
                                  "src": "3398:6:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                                    "typeString": "type(enum DepositStates.States)"
                                  }
                                },
                                "id": 3412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "COURTESY_CALL",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3398:20:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_States_$3286",
                                  "typeString": "enum DepositStates.States"
                                }
                              ],
                              "id": 3410,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3392:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint8_$",
                                "typeString": "type(uint8)"
                              },
                              "typeName": "uint8"
                            },
                            "id": 3413,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3392:27:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "3373:46:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3318:101:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 3416,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3317:103:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3400,
                  "id": 3417,
                  "nodeType": "Return",
                  "src": "3310:110:6"
                }
              ]
            },
            "documentation": "@notice     Check if the contract is available for a redemption request.\n @dev        Redemption is available from active and courtesy call.\n @param _d   Deposit storage pointer.\n @return     True if available, False otherwise.",
            "id": 3419,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inRedeemableState",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3397,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3396,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3419,
                  "src": "3210:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3395,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "3210:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3209:33:6"
            },
            "returnParameters": {
              "id": 3400,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3399,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3419,
                  "src": "3290:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3398,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3290:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3289:6:6"
            },
            "scope": 3778,
            "src": "3183:244:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3435,
              "nodeType": "Block",
              "src": "3842:64:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        "id": 3432,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3426,
                            "name": "_d",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3421,
                            "src": "3860:2:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                              "typeString": "struct DepositUtils.Deposit storage pointer"
                            }
                          },
                          "id": 3427,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "currentState",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3840,
                          "src": "3860:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3429,
                                "name": "States",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3286,
                                "src": "3885:6:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                                  "typeString": "type(enum DepositStates.States)"
                                }
                              },
                              "id": 3430,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "START",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3885:12:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_States_$3286",
                                "typeString": "enum DepositStates.States"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_States_$3286",
                                "typeString": "enum DepositStates.States"
                              }
                            ],
                            "id": 3428,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3879:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint8_$",
                              "typeString": "type(uint8)"
                            },
                            "typeName": "uint8"
                          },
                          "id": 3431,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3879:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "src": "3860:38:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "id": 3433,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "3859:40:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3425,
                  "id": 3434,
                  "nodeType": "Return",
                  "src": "3852:47:6"
                }
              ]
            },
            "documentation": "@notice     Check if the contract is currently in the start state (awaiting setup).\n @dev        This checks on the funding flow happy path, not the fraud path.\n @param _d   Deposit storage pointer.\n @return     True if contract is currently in the start state else False.",
            "id": 3436,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inStart",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3422,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3421,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3436,
                  "src": "3752:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3420,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "3752:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3751:33:6"
            },
            "returnParameters": {
              "id": 3425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3424,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3436,
                  "src": "3832:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3423,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3832:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3831:6:6"
            },
            "scope": 3778,
            "src": "3735:171:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3451,
              "nodeType": "Block",
              "src": "4033:78:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3449,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3443,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3438,
                        "src": "4050:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3444,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "4050:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3446,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "4075:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3447,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "AWAITING_SIGNER_SETUP",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4075:28:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3445,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4069:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3448,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4069:35:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "4050:54:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3442,
                  "id": 3450,
                  "nodeType": "Return",
                  "src": "4043:61:6"
                }
              ]
            },
            "documentation": null,
            "id": 3452,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inAwaitingSignerSetup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3439,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3438,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3452,
                  "src": "3943:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3437,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "3943:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3942:33:6"
            },
            "returnParameters": {
              "id": 3442,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3441,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3452,
                  "src": "4023:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3440,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4023:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4022:6:6"
            },
            "scope": 3778,
            "src": "3912:199:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3467,
              "nodeType": "Block",
              "src": "4242:83:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3465,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3459,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3454,
                        "src": "4259:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3460,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "4259:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3462,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "4284:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3463,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "AWAITING_BTC_FUNDING_PROOF",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4284:33:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3461,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4278:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3464,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4278:40:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "4259:59:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3458,
                  "id": 3466,
                  "nodeType": "Return",
                  "src": "4252:66:6"
                }
              ]
            },
            "documentation": null,
            "id": 3468,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inAwaitingBTCFundingProof",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3455,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3454,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3468,
                  "src": "4152:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3453,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "4152:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4151:33:6"
            },
            "returnParameters": {
              "id": 3458,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3457,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3468,
                  "src": "4232:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3456,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4232:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4231:6:6"
            },
            "scope": 3778,
            "src": "4117:208:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3483,
              "nodeType": "Block",
              "src": "4444:69:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3475,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3470,
                        "src": "4461:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3476,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "4461:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3478,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "4486:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3479,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "FAILED_SETUP",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4486:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4480:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3480,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4480:26:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "4461:45:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3474,
                  "id": 3482,
                  "nodeType": "Return",
                  "src": "4454:52:6"
                }
              ]
            },
            "documentation": null,
            "id": 3484,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inFailedSetup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3471,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3470,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3484,
                  "src": "4354:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3469,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "4354:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4353:33:6"
            },
            "returnParameters": {
              "id": 3474,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3473,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3484,
                  "src": "4434:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3472,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4434:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4433:6:6"
            },
            "scope": 3778,
            "src": "4331:182:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3499,
              "nodeType": "Block",
              "src": "4627:63:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3497,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3491,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3486,
                        "src": "4644:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3492,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "4644:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3494,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "4669:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3495,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "ACTIVE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4669:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3493,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4663:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3496,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4663:20:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "4644:39:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3490,
                  "id": 3498,
                  "nodeType": "Return",
                  "src": "4637:46:6"
                }
              ]
            },
            "documentation": null,
            "id": 3500,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inActive",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3487,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3486,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3500,
                  "src": "4537:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3485,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "4537:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4536:33:6"
            },
            "returnParameters": {
              "id": 3490,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3489,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3500,
                  "src": "4617:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3488,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4617:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4616:6:6"
            },
            "scope": 3778,
            "src": "4519:171:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3515,
              "nodeType": "Block",
              "src": "4825:86:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3513,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3507,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3502,
                        "src": "4842:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3508,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "4842:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3510,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "4867:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3511,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "AWAITING_WITHDRAWAL_SIGNATURE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4867:36:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3509,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4861:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3512,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4861:43:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "4842:62:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3506,
                  "id": 3514,
                  "nodeType": "Return",
                  "src": "4835:69:6"
                }
              ]
            },
            "documentation": null,
            "id": 3516,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inAwaitingWithdrawalSignature",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3503,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3502,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3516,
                  "src": "4735:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3501,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "4735:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4734:33:6"
            },
            "returnParameters": {
              "id": 3506,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3505,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3516,
                  "src": "4815:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3504,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4815:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4814:6:6"
            },
            "scope": 3778,
            "src": "4696:215:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3531,
              "nodeType": "Block",
              "src": "5042:82:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3529,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3523,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3518,
                        "src": "5059:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3524,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "5059:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3526,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "5084:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3527,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "AWAITING_WITHDRAWAL_PROOF",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5084:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5078:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3528,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5078:39:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5059:58:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3522,
                  "id": 3530,
                  "nodeType": "Return",
                  "src": "5052:65:6"
                }
              ]
            },
            "documentation": null,
            "id": 3532,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inAwaitingWithdrawalProof",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3519,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3518,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3532,
                  "src": "4952:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3517,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "4952:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4951:33:6"
            },
            "returnParameters": {
              "id": 3522,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3521,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3532,
                  "src": "5032:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3520,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5032:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5031:6:6"
            },
            "scope": 3778,
            "src": "4917:207:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3547,
              "nodeType": "Block",
              "src": "5240:65:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3545,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3539,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3534,
                        "src": "5257:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3540,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "5257:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3542,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "5282:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3543,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "REDEEMED",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5282:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3541,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5276:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3544,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5276:22:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5257:41:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3538,
                  "id": 3546,
                  "nodeType": "Return",
                  "src": "5250:48:6"
                }
              ]
            },
            "documentation": null,
            "id": 3548,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inRedeemed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3535,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3534,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3548,
                  "src": "5150:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3533,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "5150:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5149:33:6"
            },
            "returnParameters": {
              "id": 3538,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3537,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3548,
                  "src": "5230:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3536,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5230:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5229:6:6"
            },
            "scope": 3778,
            "src": "5130:175:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3563,
              "nodeType": "Block",
              "src": "5425:70:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3561,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3555,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3550,
                        "src": "5442:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3556,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "5442:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3558,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "5467:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3559,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "COURTESY_CALL",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5467:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3557,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5461:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3560,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5461:27:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5442:46:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3554,
                  "id": 3562,
                  "nodeType": "Return",
                  "src": "5435:53:6"
                }
              ]
            },
            "documentation": null,
            "id": 3564,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inCourtesyCall",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3551,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3550,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3564,
                  "src": "5335:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3549,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "5335:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5334:33:6"
            },
            "returnParameters": {
              "id": 3554,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3553,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3564,
                  "src": "5415:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3552,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5415:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5414:6:6"
            },
            "scope": 3778,
            "src": "5311:184:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3579,
              "nodeType": "Block",
              "src": "5629:86:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3577,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3571,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3566,
                        "src": "5646:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3572,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "5646:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3574,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "5671:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "FRAUD_LIQUIDATION_IN_PROGRESS",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5671:36:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3573,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5665:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3576,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5665:43:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5646:62:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3570,
                  "id": 3578,
                  "nodeType": "Return",
                  "src": "5639:69:6"
                }
              ]
            },
            "documentation": null,
            "id": 3580,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inFraudLiquidationInProgress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3567,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3566,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3580,
                  "src": "5539:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3565,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "5539:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5538:33:6"
            },
            "returnParameters": {
              "id": 3570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3569,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3580,
                  "src": "5619:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3568,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5619:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5618:6:6"
            },
            "scope": 3778,
            "src": "5501:214:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3595,
              "nodeType": "Block",
              "src": "5844:80:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3593,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3587,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3582,
                        "src": "5861:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3588,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "5861:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3590,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "5886:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3591,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "LIQUIDATION_IN_PROGRESS",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5886:30:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3589,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "5880:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3592,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "5880:37:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "5861:56:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3586,
                  "id": 3594,
                  "nodeType": "Return",
                  "src": "5854:63:6"
                }
              ]
            },
            "documentation": null,
            "id": 3596,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inLiquidationInProgress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3583,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3582,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3596,
                  "src": "5754:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3581,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "5754:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5753:33:6"
            },
            "returnParameters": {
              "id": 3586,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3585,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3596,
                  "src": "5834:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3584,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5834:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5833:6:6"
            },
            "scope": 3778,
            "src": "5721:203:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3611,
              "nodeType": "Block",
              "src": "6042:67:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    },
                    "id": 3609,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3603,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3598,
                        "src": "6059:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3604,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "6059:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3606,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "6084:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3607,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "LIQUIDATED",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6084:17:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6078:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3608,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6078:24:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6059:43:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 3602,
                  "id": 3610,
                  "nodeType": "Return",
                  "src": "6052:50:6"
                }
              ]
            },
            "documentation": null,
            "id": 3612,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "inLiquidated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3599,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3598,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3612,
                  "src": "5952:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3597,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "5952:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5951:33:6"
            },
            "returnParameters": {
              "id": 3602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3601,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 3612,
                  "src": "6032:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3600,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6032:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6031:6:6"
            },
            "scope": 3778,
            "src": "5930:179:6",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3626,
              "nodeType": "Block",
              "src": "6189:70:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3617,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3614,
                        "src": "6199:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3619,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "6199:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3621,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "6223:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "AWAITING_SIGNER_SETUP",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6223:28:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3620,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6217:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3623,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6217:35:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6199:53:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3625,
                  "nodeType": "ExpressionStatement",
                  "src": "6199:53:6"
                }
              ]
            },
            "documentation": null,
            "id": 3627,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setAwaitingSignerSetup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3615,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3614,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3627,
                  "src": "6147:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3613,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "6147:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6146:33:6"
            },
            "returnParameters": {
              "id": 3616,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6189:0:6"
            },
            "scope": 3778,
            "src": "6115:144:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3641,
              "nodeType": "Block",
              "src": "6355:75:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3639,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3632,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3629,
                        "src": "6365:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3634,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "6365:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3636,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "6389:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "AWAITING_BTC_FUNDING_PROOF",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6389:33:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3635,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6383:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3638,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6383:40:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6365:58:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3640,
                  "nodeType": "ExpressionStatement",
                  "src": "6365:58:6"
                }
              ]
            },
            "documentation": null,
            "id": 3642,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setAwaitingBTCFundingProof",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3630,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3629,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3642,
                  "src": "6301:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3628,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "6301:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6300:33:6"
            },
            "returnParameters": {
              "id": 3631,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6355:0:6"
            },
            "scope": 3778,
            "src": "6265:165:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3656,
              "nodeType": "Block",
              "src": "6502:61:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3654,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3647,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3644,
                        "src": "6512:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3649,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "6512:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3651,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "6536:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3652,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "FAILED_SETUP",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6536:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3650,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6530:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3653,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6530:26:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6512:44:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3655,
                  "nodeType": "ExpressionStatement",
                  "src": "6512:44:6"
                }
              ]
            },
            "documentation": null,
            "id": 3657,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setFailedSetup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3645,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3644,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3657,
                  "src": "6460:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3643,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "6460:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6459:33:6"
            },
            "returnParameters": {
              "id": 3646,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6502:0:6"
            },
            "scope": 3778,
            "src": "6436:127:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3671,
              "nodeType": "Block",
              "src": "6630:55:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3669,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3662,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3659,
                        "src": "6640:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3664,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "6640:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3666,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "6664:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3667,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "ACTIVE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6664:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3665,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6658:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3668,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6658:20:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6640:38:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3670,
                  "nodeType": "ExpressionStatement",
                  "src": "6640:38:6"
                }
              ]
            },
            "documentation": null,
            "id": 3672,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setActive",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3660,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3659,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3672,
                  "src": "6588:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3658,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "6588:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6587:33:6"
            },
            "returnParameters": {
              "id": 3661,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6630:0:6"
            },
            "scope": 3778,
            "src": "6569:116:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3686,
              "nodeType": "Block",
              "src": "6785:78:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3684,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3677,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3674,
                        "src": "6795:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3679,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "6795:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3681,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "6819:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3682,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "AWAITING_WITHDRAWAL_SIGNATURE",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6819:36:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3680,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6813:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3683,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6813:43:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6795:61:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3685,
                  "nodeType": "ExpressionStatement",
                  "src": "6795:61:6"
                }
              ]
            },
            "documentation": null,
            "id": 3687,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setAwaitingWithdrawalSignature",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3675,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3674,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3687,
                  "src": "6731:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3673,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "6731:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6730:33:6"
            },
            "returnParameters": {
              "id": 3676,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6785:0:6"
            },
            "scope": 3778,
            "src": "6691:172:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3701,
              "nodeType": "Block",
              "src": "6959:74:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3699,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3692,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3689,
                        "src": "6969:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3694,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "6969:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3696,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "6993:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3697,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "AWAITING_WITHDRAWAL_PROOF",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6993:32:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3695,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "6987:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3698,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6987:39:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6969:57:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3700,
                  "nodeType": "ExpressionStatement",
                  "src": "6969:57:6"
                }
              ]
            },
            "documentation": null,
            "id": 3702,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setAwaitingWithdrawalProof",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3690,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3689,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3702,
                  "src": "6905:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3688,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "6905:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6904:33:6"
            },
            "returnParameters": {
              "id": 3691,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6959:0:6"
            },
            "scope": 3778,
            "src": "6869:164:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3716,
              "nodeType": "Block",
              "src": "7102:57:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3714,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3707,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3704,
                        "src": "7112:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3709,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "7112:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3711,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "7136:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3712,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "REDEEMED",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7136:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3710,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7130:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3713,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7130:22:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "7112:40:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3715,
                  "nodeType": "ExpressionStatement",
                  "src": "7112:40:6"
                }
              ]
            },
            "documentation": null,
            "id": 3717,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setRedeemed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3705,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3704,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3717,
                  "src": "7060:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3703,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "7060:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7059:33:6"
            },
            "returnParameters": {
              "id": 3706,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7102:0:6"
            },
            "scope": 3778,
            "src": "7039:120:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3731,
              "nodeType": "Block",
              "src": "7232:62:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3729,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3722,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3719,
                        "src": "7242:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3724,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "7242:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3726,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "7266:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3727,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "COURTESY_CALL",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7266:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3725,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7260:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3728,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7260:27:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "7242:45:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3730,
                  "nodeType": "ExpressionStatement",
                  "src": "7242:45:6"
                }
              ]
            },
            "documentation": null,
            "id": 3732,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setCourtesyCall",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3720,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3719,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3732,
                  "src": "7190:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3718,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "7190:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7189:33:6"
            },
            "returnParameters": {
              "id": 3721,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7232:0:6"
            },
            "scope": 3778,
            "src": "7165:129:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3746,
              "nodeType": "Block",
              "src": "7393:78:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3744,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3737,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3734,
                        "src": "7403:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3739,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "7403:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3741,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "7427:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3742,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "FRAUD_LIQUIDATION_IN_PROGRESS",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7427:36:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3740,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7421:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3743,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7421:43:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "7403:61:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3745,
                  "nodeType": "ExpressionStatement",
                  "src": "7403:61:6"
                }
              ]
            },
            "documentation": null,
            "id": 3747,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setFraudLiquidationInProgress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3735,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3734,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3747,
                  "src": "7339:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3733,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "7339:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7338:33:6"
            },
            "returnParameters": {
              "id": 3736,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7393:0:6"
            },
            "scope": 3778,
            "src": "7300:171:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3761,
              "nodeType": "Block",
              "src": "7565:72:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3759,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3752,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3749,
                        "src": "7575:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3754,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "7575:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3756,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "7599:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3757,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "LIQUIDATION_IN_PROGRESS",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7599:30:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3755,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7593:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3758,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7593:37:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "7575:55:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3760,
                  "nodeType": "ExpressionStatement",
                  "src": "7575:55:6"
                }
              ]
            },
            "documentation": null,
            "id": 3762,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setLiquidationInProgress",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3750,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3749,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3762,
                  "src": "7511:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3748,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "7511:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7510:33:6"
            },
            "returnParameters": {
              "id": 3751,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7565:0:6"
            },
            "scope": 3778,
            "src": "7477:160:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 3776,
              "nodeType": "Block",
              "src": "7708:59:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 3774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 3767,
                        "name": "_d",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3764,
                        "src": "7718:2:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                          "typeString": "struct DepositUtils.Deposit storage pointer"
                        }
                      },
                      "id": 3769,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "currentState",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3840,
                      "src": "7718:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3771,
                            "name": "States",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "7742:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_States_$3286_$",
                              "typeString": "type(enum DepositStates.States)"
                            }
                          },
                          "id": 3772,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "LIQUIDATED",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "7742:17:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_enum$_States_$3286",
                            "typeString": "enum DepositStates.States"
                          }
                        ],
                        "id": 3770,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "7736:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint8_$",
                          "typeString": "type(uint8)"
                        },
                        "typeName": "uint8"
                      },
                      "id": 3773,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "7736:24:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "7718:42:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 3775,
                  "nodeType": "ExpressionStatement",
                  "src": "7718:42:6"
                }
              ]
            },
            "documentation": null,
            "id": 3777,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setLiquidated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 3765,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3764,
                  "name": "_d",
                  "nodeType": "VariableDeclaration",
                  "scope": 3777,
                  "src": "7666:31:6",
                  "stateVariable": false,
                  "storageLocation": "storage",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                    "typeString": "struct DepositUtils.Deposit"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 3763,
                    "name": "DepositUtils.Deposit",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 3893,
                    "src": "7666:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Deposit_$3893_storage_ptr",
                      "typeString": "struct DepositUtils.Deposit"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7665:33:6"
            },
            "returnParameters": {
              "id": 3766,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7708:0:6"
            },
            "scope": 3778,
            "src": "7643:124:6",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 3779,
        "src": "75:7694:6"
      }
    ],
    "src": "0:7770:6"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositStates.sol",
      "exportedSymbols": {
        "DepositStates": [
          3778
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.5",
            ".17"
          ]
        },
        "id": 3271,
        "name": "PragmaDirective",
        "src": "0:23:6"
      },
      {
        "attributes": {
          "SourceUnit": 5104,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/deposit/DepositUtils.sol",
          "file": "./DepositUtils.sol",
          "scope": 3779,
          "symbolAliases": [
            {
              "foreign": 3272,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 3273,
        "name": "ImportDirective",
        "src": "25:48:6"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "library",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            3778
          ],
          "name": "DepositStates",
          "scope": 3779
        },
        "children": [
          {
            "attributes": {
              "canonicalName": "DepositStates.States",
              "name": "States"
            },
            "children": [
              {
                "attributes": {
                  "name": "START"
                },
                "id": 3274,
                "name": "EnumValue",
                "src": "155:5:6"
              },
              {
                "attributes": {
                  "name": "AWAITING_SIGNER_SETUP"
                },
                "id": 3275,
                "name": "EnumValue",
                "src": "194:21:6"
              },
              {
                "attributes": {
                  "name": "AWAITING_BTC_FUNDING_PROOF"
                },
                "id": 3276,
                "name": "EnumValue",
                "src": "225:26:6"
              },
              {
                "attributes": {
                  "name": "FAILED_SETUP"
                },
                "id": 3277,
                "name": "EnumValue",
                "src": "285:12:6"
              },
              {
                "attributes": {
                  "name": "ACTIVE"
                },
                "id": 3278,
                "name": "EnumValue",
                "src": "325:6:6"
              },
              {
                "attributes": {
                  "name": "AWAITING_WITHDRAWAL_SIGNATURE"
                },
                "id": 3279,
                "name": "EnumValue",
                "src": "394:29:6"
              },
              {
                "attributes": {
                  "name": "AWAITING_WITHDRAWAL_PROOF"
                },
                "id": 3280,
                "name": "EnumValue",
                "src": "433:25:6"
              },
              {
                "attributes": {
                  "name": "REDEEMED"
                },
                "id": 3281,
                "name": "EnumValue",
                "src": "468:8:6"
              },
              {
                "attributes": {
                  "name": "COURTESY_CALL"
                },
                "id": 3282,
                "name": "EnumValue",
                "src": "521:13:6"
              },
              {
                "attributes": {
                  "name": "FRAUD_LIQUIDATION_IN_PROGRESS"
                },
                "id": 3283,
                "name": "EnumValue",
                "src": "544:29:6"
              },
              {
                "attributes": {
                  "name": "LIQUIDATION_IN_PROGRESS"
                },
                "id": 3284,
                "name": "EnumValue",
                "src": "583:23:6"
              },
              {
                "attributes": {
                  "name": "LIQUIDATED"
                },
                "id": 3285,
                "name": "EnumValue",
                "src": "616:10:6"
              }
            ],
            "id": 3286,
            "name": "EnumDefinition",
            "src": "103:529:6"
          },
          {
            "attributes": {
              "documentation": "@notice     Check if the contract is currently in the funding flow.\n @dev        This checks on the funding flow happy path, not the fraud path.\n @param _d   Deposit storage pointer.\n @return     True if contract is currently in the funding flow else False.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inFunding",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3311,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3287,
                        "name": "UserDefinedTypeName",
                        "src": "944:20:6"
                      }
                    ],
                    "id": 3288,
                    "name": "VariableDeclaration",
                    "src": "944:31:6"
                  }
                ],
                "id": 3289,
                "name": "ParameterList",
                "src": "943:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3311,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3290,
                        "name": "ElementaryTypeName",
                        "src": "1024:4:6"
                      }
                    ],
                    "id": 3291,
                    "name": "VariableDeclaration",
                    "src": "1024:4:6"
                  }
                ],
                "id": 3292,
                "name": "ParameterList",
                "src": "1023:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3292
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "||",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "currentState",
                                      "referencedDeclaration": 3840,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3288,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 3293,
                                        "name": "Identifier",
                                        "src": "1052:2:6"
                                      }
                                    ],
                                    "id": 3294,
                                    "name": "MemberAccess",
                                    "src": "1052:15:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint8",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_States_$3286",
                                              "typeString": "enum DepositStates.States"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint8)",
                                          "value": "uint8"
                                        },
                                        "id": 3295,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "1071:5:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "AWAITING_SIGNER_SETUP",
                                          "referencedDeclaration": null,
                                          "type": "enum DepositStates.States"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3286,
                                              "type": "type(enum DepositStates.States)",
                                              "value": "States"
                                            },
                                            "id": 3296,
                                            "name": "Identifier",
                                            "src": "1077:6:6"
                                          }
                                        ],
                                        "id": 3297,
                                        "name": "MemberAccess",
                                        "src": "1077:28:6"
                                      }
                                    ],
                                    "id": 3298,
                                    "name": "FunctionCall",
                                    "src": "1071:35:6"
                                  }
                                ],
                                "id": 3299,
                                "name": "BinaryOperation",
                                "src": "1052:54:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "currentState",
                                      "referencedDeclaration": 3840,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3288,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 3300,
                                        "name": "Identifier",
                                        "src": "1122:2:6"
                                      }
                                    ],
                                    "id": 3301,
                                    "name": "MemberAccess",
                                    "src": "1122:15:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint8",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_States_$3286",
                                              "typeString": "enum DepositStates.States"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint8)",
                                          "value": "uint8"
                                        },
                                        "id": 3302,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "1141:5:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "AWAITING_BTC_FUNDING_PROOF",
                                          "referencedDeclaration": null,
                                          "type": "enum DepositStates.States"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3286,
                                              "type": "type(enum DepositStates.States)",
                                              "value": "States"
                                            },
                                            "id": 3303,
                                            "name": "Identifier",
                                            "src": "1147:6:6"
                                          }
                                        ],
                                        "id": 3304,
                                        "name": "MemberAccess",
                                        "src": "1147:33:6"
                                      }
                                    ],
                                    "id": 3305,
                                    "name": "FunctionCall",
                                    "src": "1141:40:6"
                                  }
                                ],
                                "id": 3306,
                                "name": "BinaryOperation",
                                "src": "1122:59:6"
                              }
                            ],
                            "id": 3307,
                            "name": "BinaryOperation",
                            "src": "1052:129:6"
                          }
                        ],
                        "id": 3308,
                        "name": "TupleExpression",
                        "src": "1051:131:6"
                      }
                    ],
                    "id": 3309,
                    "name": "Return",
                    "src": "1044:138:6"
                  }
                ],
                "id": 3310,
                "name": "Block",
                "src": "1034:155:6"
              }
            ],
            "id": 3311,
            "name": "FunctionDefinition",
            "src": "925:264:6"
          },
          {
            "attributes": {
              "documentation": "@notice     Check if the contract is currently in the signer liquidation flow.\n @dev        This could be caused by fraud, or by an unfilled margin call.\n @param _d   Deposit storage pointer.\n @return     True if contract is currently in the liquidaton flow else False.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inSignerLiquidation",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3336,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3312,
                        "name": "UserDefinedTypeName",
                        "src": "1523:20:6"
                      }
                    ],
                    "id": 3313,
                    "name": "VariableDeclaration",
                    "src": "1523:31:6"
                  }
                ],
                "id": 3314,
                "name": "ParameterList",
                "src": "1522:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3336,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3315,
                        "name": "ElementaryTypeName",
                        "src": "1603:4:6"
                      }
                    ],
                    "id": 3316,
                    "name": "VariableDeclaration",
                    "src": "1603:4:6"
                  }
                ],
                "id": 3317,
                "name": "ParameterList",
                "src": "1602:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3317
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "||",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "currentState",
                                      "referencedDeclaration": 3840,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3313,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 3318,
                                        "name": "Identifier",
                                        "src": "1631:2:6"
                                      }
                                    ],
                                    "id": 3319,
                                    "name": "MemberAccess",
                                    "src": "1631:15:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint8",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_States_$3286",
                                              "typeString": "enum DepositStates.States"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint8)",
                                          "value": "uint8"
                                        },
                                        "id": 3320,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "1650:5:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "LIQUIDATION_IN_PROGRESS",
                                          "referencedDeclaration": null,
                                          "type": "enum DepositStates.States"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3286,
                                              "type": "type(enum DepositStates.States)",
                                              "value": "States"
                                            },
                                            "id": 3321,
                                            "name": "Identifier",
                                            "src": "1656:6:6"
                                          }
                                        ],
                                        "id": 3322,
                                        "name": "MemberAccess",
                                        "src": "1656:30:6"
                                      }
                                    ],
                                    "id": 3323,
                                    "name": "FunctionCall",
                                    "src": "1650:37:6"
                                  }
                                ],
                                "id": 3324,
                                "name": "BinaryOperation",
                                "src": "1631:56:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "currentState",
                                      "referencedDeclaration": 3840,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3313,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 3325,
                                        "name": "Identifier",
                                        "src": "1703:2:6"
                                      }
                                    ],
                                    "id": 3326,
                                    "name": "MemberAccess",
                                    "src": "1703:15:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint8",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_States_$3286",
                                              "typeString": "enum DepositStates.States"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint8)",
                                          "value": "uint8"
                                        },
                                        "id": 3327,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "1722:5:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "FRAUD_LIQUIDATION_IN_PROGRESS",
                                          "referencedDeclaration": null,
                                          "type": "enum DepositStates.States"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3286,
                                              "type": "type(enum DepositStates.States)",
                                              "value": "States"
                                            },
                                            "id": 3328,
                                            "name": "Identifier",
                                            "src": "1728:6:6"
                                          }
                                        ],
                                        "id": 3329,
                                        "name": "MemberAccess",
                                        "src": "1728:36:6"
                                      }
                                    ],
                                    "id": 3330,
                                    "name": "FunctionCall",
                                    "src": "1722:43:6"
                                  }
                                ],
                                "id": 3331,
                                "name": "BinaryOperation",
                                "src": "1703:62:6"
                              }
                            ],
                            "id": 3332,
                            "name": "BinaryOperation",
                            "src": "1631:134:6"
                          }
                        ],
                        "id": 3333,
                        "name": "TupleExpression",
                        "src": "1630:136:6"
                      }
                    ],
                    "id": 3334,
                    "name": "Return",
                    "src": "1623:143:6"
                  }
                ],
                "id": 3335,
                "name": "Block",
                "src": "1613:160:6"
              }
            ],
            "id": 3336,
            "name": "FunctionDefinition",
            "src": "1494:279:6"
          },
          {
            "attributes": {
              "documentation": "@notice     Check if the contract is currently in the redepmtion flow.\n @dev        This checks on the redemption flow, not the REDEEMED termination state.\n @param _d   Deposit storage pointer.\n @return     True if contract is currently in the redemption flow else False.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inRedemption",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3361,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3337,
                        "name": "UserDefinedTypeName",
                        "src": "2102:20:6"
                      }
                    ],
                    "id": 3338,
                    "name": "VariableDeclaration",
                    "src": "2102:31:6"
                  }
                ],
                "id": 3339,
                "name": "ParameterList",
                "src": "2101:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3361,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3340,
                        "name": "ElementaryTypeName",
                        "src": "2182:4:6"
                      }
                    ],
                    "id": 3341,
                    "name": "VariableDeclaration",
                    "src": "2182:4:6"
                  }
                ],
                "id": 3342,
                "name": "ParameterList",
                "src": "2181:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3342
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "||",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "currentState",
                                      "referencedDeclaration": 3840,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3338,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 3343,
                                        "name": "Identifier",
                                        "src": "2210:2:6"
                                      }
                                    ],
                                    "id": 3344,
                                    "name": "MemberAccess",
                                    "src": "2210:15:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint8",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_States_$3286",
                                              "typeString": "enum DepositStates.States"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint8)",
                                          "value": "uint8"
                                        },
                                        "id": 3345,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "2241:5:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "AWAITING_WITHDRAWAL_SIGNATURE",
                                          "referencedDeclaration": null,
                                          "type": "enum DepositStates.States"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3286,
                                              "type": "type(enum DepositStates.States)",
                                              "value": "States"
                                            },
                                            "id": 3346,
                                            "name": "Identifier",
                                            "src": "2247:6:6"
                                          }
                                        ],
                                        "id": 3347,
                                        "name": "MemberAccess",
                                        "src": "2247:36:6"
                                      }
                                    ],
                                    "id": 3348,
                                    "name": "FunctionCall",
                                    "src": "2241:43:6"
                                  }
                                ],
                                "id": 3349,
                                "name": "BinaryOperation",
                                "src": "2210:74:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "currentState",
                                      "referencedDeclaration": 3840,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3338,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 3350,
                                        "name": "Identifier",
                                        "src": "2300:2:6"
                                      }
                                    ],
                                    "id": 3351,
                                    "name": "MemberAccess",
                                    "src": "2300:15:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint8",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_States_$3286",
                                              "typeString": "enum DepositStates.States"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint8)",
                                          "value": "uint8"
                                        },
                                        "id": 3352,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "2319:5:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "AWAITING_WITHDRAWAL_PROOF",
                                          "referencedDeclaration": null,
                                          "type": "enum DepositStates.States"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3286,
                                              "type": "type(enum DepositStates.States)",
                                              "value": "States"
                                            },
                                            "id": 3353,
                                            "name": "Identifier",
                                            "src": "2325:6:6"
                                          }
                                        ],
                                        "id": 3354,
                                        "name": "MemberAccess",
                                        "src": "2325:32:6"
                                      }
                                    ],
                                    "id": 3355,
                                    "name": "FunctionCall",
                                    "src": "2319:39:6"
                                  }
                                ],
                                "id": 3356,
                                "name": "BinaryOperation",
                                "src": "2300:58:6"
                              }
                            ],
                            "id": 3357,
                            "name": "BinaryOperation",
                            "src": "2210:148:6"
                          }
                        ],
                        "id": 3358,
                        "name": "TupleExpression",
                        "src": "2209:150:6"
                      }
                    ],
                    "id": 3359,
                    "name": "Return",
                    "src": "2202:157:6"
                  }
                ],
                "id": 3360,
                "name": "Block",
                "src": "2192:174:6"
              }
            ],
            "id": 3361,
            "name": "FunctionDefinition",
            "src": "2080:286:6"
          },
          {
            "attributes": {
              "documentation": "@notice     Check if the contract has halted.\n @dev        This checks on any halt state, regardless of triggering circumstances.\n @param _d   Deposit storage pointer.\n @return     True if contract has halted permanently.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inEndState",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3394,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3362,
                        "name": "UserDefinedTypeName",
                        "src": "2643:20:6"
                      }
                    ],
                    "id": 3363,
                    "name": "VariableDeclaration",
                    "src": "2643:31:6"
                  }
                ],
                "id": 3364,
                "name": "ParameterList",
                "src": "2642:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3394,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3365,
                        "name": "ElementaryTypeName",
                        "src": "2723:4:6"
                      }
                    ],
                    "id": 3366,
                    "name": "VariableDeclaration",
                    "src": "2723:4:6"
                  }
                ],
                "id": 3367,
                "name": "ParameterList",
                "src": "2722:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3367
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "||",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "||",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "currentState",
                                          "referencedDeclaration": 3840,
                                          "type": "uint8"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3363,
                                              "type": "struct DepositUtils.Deposit storage pointer",
                                              "value": "_d"
                                            },
                                            "id": 3368,
                                            "name": "Identifier",
                                            "src": "2751:2:6"
                                          }
                                        ],
                                        "id": 3369,
                                        "name": "MemberAccess",
                                        "src": "2751:15:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "uint8",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_enum$_States_$3286",
                                                  "typeString": "enum DepositStates.States"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(uint8)",
                                              "value": "uint8"
                                            },
                                            "id": 3370,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "2770:5:6"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "member_name": "LIQUIDATED",
                                              "referencedDeclaration": null,
                                              "type": "enum DepositStates.States"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3286,
                                                  "type": "type(enum DepositStates.States)",
                                                  "value": "States"
                                                },
                                                "id": 3371,
                                                "name": "Identifier",
                                                "src": "2776:6:6"
                                              }
                                            ],
                                            "id": 3372,
                                            "name": "MemberAccess",
                                            "src": "2776:17:6"
                                          }
                                        ],
                                        "id": 3373,
                                        "name": "FunctionCall",
                                        "src": "2770:24:6"
                                      }
                                    ],
                                    "id": 3374,
                                    "name": "BinaryOperation",
                                    "src": "2751:43:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint8",
                                        "typeString": "uint8"
                                      },
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "==",
                                      "type": "bool"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "currentState",
                                          "referencedDeclaration": 3840,
                                          "type": "uint8"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3363,
                                              "type": "struct DepositUtils.Deposit storage pointer",
                                              "value": "_d"
                                            },
                                            "id": 3375,
                                            "name": "Identifier",
                                            "src": "2810:2:6"
                                          }
                                        ],
                                        "id": 3376,
                                        "name": "MemberAccess",
                                        "src": "2810:15:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "type": "uint8",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_enum$_States_$3286",
                                                  "typeString": "enum DepositStates.States"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(uint8)",
                                              "value": "uint8"
                                            },
                                            "id": 3377,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "2829:5:6"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "member_name": "REDEEMED",
                                              "referencedDeclaration": null,
                                              "type": "enum DepositStates.States"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 3286,
                                                  "type": "type(enum DepositStates.States)",
                                                  "value": "States"
                                                },
                                                "id": 3378,
                                                "name": "Identifier",
                                                "src": "2835:6:6"
                                              }
                                            ],
                                            "id": 3379,
                                            "name": "MemberAccess",
                                            "src": "2835:15:6"
                                          }
                                        ],
                                        "id": 3380,
                                        "name": "FunctionCall",
                                        "src": "2829:22:6"
                                      }
                                    ],
                                    "id": 3381,
                                    "name": "BinaryOperation",
                                    "src": "2810:41:6"
                                  }
                                ],
                                "id": 3382,
                                "name": "BinaryOperation",
                                "src": "2751:100:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "currentState",
                                      "referencedDeclaration": 3840,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3363,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 3383,
                                        "name": "Identifier",
                                        "src": "2867:2:6"
                                      }
                                    ],
                                    "id": 3384,
                                    "name": "MemberAccess",
                                    "src": "2867:15:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint8",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_States_$3286",
                                              "typeString": "enum DepositStates.States"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint8)",
                                          "value": "uint8"
                                        },
                                        "id": 3385,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "2886:5:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "FAILED_SETUP",
                                          "referencedDeclaration": null,
                                          "type": "enum DepositStates.States"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3286,
                                              "type": "type(enum DepositStates.States)",
                                              "value": "States"
                                            },
                                            "id": 3386,
                                            "name": "Identifier",
                                            "src": "2892:6:6"
                                          }
                                        ],
                                        "id": 3387,
                                        "name": "MemberAccess",
                                        "src": "2892:19:6"
                                      }
                                    ],
                                    "id": 3388,
                                    "name": "FunctionCall",
                                    "src": "2886:26:6"
                                  }
                                ],
                                "id": 3389,
                                "name": "BinaryOperation",
                                "src": "2867:45:6"
                              }
                            ],
                            "id": 3390,
                            "name": "BinaryOperation",
                            "src": "2751:161:6"
                          }
                        ],
                        "id": 3391,
                        "name": "TupleExpression",
                        "src": "2750:163:6"
                      }
                    ],
                    "id": 3392,
                    "name": "Return",
                    "src": "2743:170:6"
                  }
                ],
                "id": 3393,
                "name": "Block",
                "src": "2733:187:6"
              }
            ],
            "id": 3394,
            "name": "FunctionDefinition",
            "src": "2623:297:6"
          },
          {
            "attributes": {
              "documentation": "@notice     Check if the contract is available for a redemption request.\n @dev        Redemption is available from active and courtesy call.\n @param _d   Deposit storage pointer.\n @return     True if available, False otherwise.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inRedeemableState",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3419,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3395,
                        "name": "UserDefinedTypeName",
                        "src": "3210:20:6"
                      }
                    ],
                    "id": 3396,
                    "name": "VariableDeclaration",
                    "src": "3210:31:6"
                  }
                ],
                "id": 3397,
                "name": "ParameterList",
                "src": "3209:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3419,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3398,
                        "name": "ElementaryTypeName",
                        "src": "3290:4:6"
                      }
                    ],
                    "id": 3399,
                    "name": "VariableDeclaration",
                    "src": "3290:4:6"
                  }
                ],
                "id": 3400,
                "name": "ParameterList",
                "src": "3289:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3400
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "||",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "currentState",
                                      "referencedDeclaration": 3840,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3396,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 3401,
                                        "name": "Identifier",
                                        "src": "3318:2:6"
                                      }
                                    ],
                                    "id": 3402,
                                    "name": "MemberAccess",
                                    "src": "3318:15:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint8",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_States_$3286",
                                              "typeString": "enum DepositStates.States"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint8)",
                                          "value": "uint8"
                                        },
                                        "id": 3403,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "3337:5:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "ACTIVE",
                                          "referencedDeclaration": null,
                                          "type": "enum DepositStates.States"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3286,
                                              "type": "type(enum DepositStates.States)",
                                              "value": "States"
                                            },
                                            "id": 3404,
                                            "name": "Identifier",
                                            "src": "3343:6:6"
                                          }
                                        ],
                                        "id": 3405,
                                        "name": "MemberAccess",
                                        "src": "3343:13:6"
                                      }
                                    ],
                                    "id": 3406,
                                    "name": "FunctionCall",
                                    "src": "3337:20:6"
                                  }
                                ],
                                "id": 3407,
                                "name": "BinaryOperation",
                                "src": "3318:39:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "currentState",
                                      "referencedDeclaration": 3840,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3396,
                                          "type": "struct DepositUtils.Deposit storage pointer",
                                          "value": "_d"
                                        },
                                        "id": 3408,
                                        "name": "Identifier",
                                        "src": "3373:2:6"
                                      }
                                    ],
                                    "id": 3409,
                                    "name": "MemberAccess",
                                    "src": "3373:15:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "uint8",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_States_$3286",
                                              "typeString": "enum DepositStates.States"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint8)",
                                          "value": "uint8"
                                        },
                                        "id": 3410,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "3392:5:6"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "COURTESY_CALL",
                                          "referencedDeclaration": null,
                                          "type": "enum DepositStates.States"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 3286,
                                              "type": "type(enum DepositStates.States)",
                                              "value": "States"
                                            },
                                            "id": 3411,
                                            "name": "Identifier",
                                            "src": "3398:6:6"
                                          }
                                        ],
                                        "id": 3412,
                                        "name": "MemberAccess",
                                        "src": "3398:20:6"
                                      }
                                    ],
                                    "id": 3413,
                                    "name": "FunctionCall",
                                    "src": "3392:27:6"
                                  }
                                ],
                                "id": 3414,
                                "name": "BinaryOperation",
                                "src": "3373:46:6"
                              }
                            ],
                            "id": 3415,
                            "name": "BinaryOperation",
                            "src": "3318:101:6"
                          }
                        ],
                        "id": 3416,
                        "name": "TupleExpression",
                        "src": "3317:103:6"
                      }
                    ],
                    "id": 3417,
                    "name": "Return",
                    "src": "3310:110:6"
                  }
                ],
                "id": 3418,
                "name": "Block",
                "src": "3300:127:6"
              }
            ],
            "id": 3419,
            "name": "FunctionDefinition",
            "src": "3183:244:6"
          },
          {
            "attributes": {
              "documentation": "@notice     Check if the contract is currently in the start state (awaiting setup).\n @dev        This checks on the funding flow happy path, not the fraud path.\n @param _d   Deposit storage pointer.\n @return     True if contract is currently in the start state else False.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inStart",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3436,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3420,
                        "name": "UserDefinedTypeName",
                        "src": "3752:20:6"
                      }
                    ],
                    "id": 3421,
                    "name": "VariableDeclaration",
                    "src": "3752:31:6"
                  }
                ],
                "id": 3422,
                "name": "ParameterList",
                "src": "3751:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3436,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3423,
                        "name": "ElementaryTypeName",
                        "src": "3832:4:6"
                      }
                    ],
                    "id": 3424,
                    "name": "VariableDeclaration",
                    "src": "3832:4:6"
                  }
                ],
                "id": 3425,
                "name": "ParameterList",
                "src": "3831:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3425
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "currentState",
                                  "referencedDeclaration": 3840,
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3421,
                                      "type": "struct DepositUtils.Deposit storage pointer",
                                      "value": "_d"
                                    },
                                    "id": 3426,
                                    "name": "Identifier",
                                    "src": "3860:2:6"
                                  }
                                ],
                                "id": 3427,
                                "name": "MemberAccess",
                                "src": "3860:15:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "uint8",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_enum$_States_$3286",
                                          "typeString": "enum DepositStates.States"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint8)",
                                      "value": "uint8"
                                    },
                                    "id": 3428,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "3879:5:6"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "START",
                                      "referencedDeclaration": null,
                                      "type": "enum DepositStates.States"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3286,
                                          "type": "type(enum DepositStates.States)",
                                          "value": "States"
                                        },
                                        "id": 3429,
                                        "name": "Identifier",
                                        "src": "3885:6:6"
                                      }
                                    ],
                                    "id": 3430,
                                    "name": "MemberAccess",
                                    "src": "3885:12:6"
                                  }
                                ],
                                "id": 3431,
                                "name": "FunctionCall",
                                "src": "3879:19:6"
                              }
                            ],
                            "id": 3432,
                            "name": "BinaryOperation",
                            "src": "3860:38:6"
                          }
                        ],
                        "id": 3433,
                        "name": "TupleExpression",
                        "src": "3859:40:6"
                      }
                    ],
                    "id": 3434,
                    "name": "Return",
                    "src": "3852:47:6"
                  }
                ],
                "id": 3435,
                "name": "Block",
                "src": "3842:64:6"
              }
            ],
            "id": 3436,
            "name": "FunctionDefinition",
            "src": "3735:171:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inAwaitingSignerSetup",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3452,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3437,
                        "name": "UserDefinedTypeName",
                        "src": "3943:20:6"
                      }
                    ],
                    "id": 3438,
                    "name": "VariableDeclaration",
                    "src": "3943:31:6"
                  }
                ],
                "id": 3439,
                "name": "ParameterList",
                "src": "3942:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3452,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3440,
                        "name": "ElementaryTypeName",
                        "src": "4023:4:6"
                      }
                    ],
                    "id": 3441,
                    "name": "VariableDeclaration",
                    "src": "4023:4:6"
                  }
                ],
                "id": 3442,
                "name": "ParameterList",
                "src": "4022:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3442
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3438,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3443,
                                "name": "Identifier",
                                "src": "4050:2:6"
                              }
                            ],
                            "id": 3444,
                            "name": "MemberAccess",
                            "src": "4050:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3445,
                                "name": "ElementaryTypeNameExpression",
                                "src": "4069:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "AWAITING_SIGNER_SETUP",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3446,
                                    "name": "Identifier",
                                    "src": "4075:6:6"
                                  }
                                ],
                                "id": 3447,
                                "name": "MemberAccess",
                                "src": "4075:28:6"
                              }
                            ],
                            "id": 3448,
                            "name": "FunctionCall",
                            "src": "4069:35:6"
                          }
                        ],
                        "id": 3449,
                        "name": "BinaryOperation",
                        "src": "4050:54:6"
                      }
                    ],
                    "id": 3450,
                    "name": "Return",
                    "src": "4043:61:6"
                  }
                ],
                "id": 3451,
                "name": "Block",
                "src": "4033:78:6"
              }
            ],
            "id": 3452,
            "name": "FunctionDefinition",
            "src": "3912:199:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inAwaitingBTCFundingProof",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3468,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3453,
                        "name": "UserDefinedTypeName",
                        "src": "4152:20:6"
                      }
                    ],
                    "id": 3454,
                    "name": "VariableDeclaration",
                    "src": "4152:31:6"
                  }
                ],
                "id": 3455,
                "name": "ParameterList",
                "src": "4151:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3468,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3456,
                        "name": "ElementaryTypeName",
                        "src": "4232:4:6"
                      }
                    ],
                    "id": 3457,
                    "name": "VariableDeclaration",
                    "src": "4232:4:6"
                  }
                ],
                "id": 3458,
                "name": "ParameterList",
                "src": "4231:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3458
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3454,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3459,
                                "name": "Identifier",
                                "src": "4259:2:6"
                              }
                            ],
                            "id": 3460,
                            "name": "MemberAccess",
                            "src": "4259:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3461,
                                "name": "ElementaryTypeNameExpression",
                                "src": "4278:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "AWAITING_BTC_FUNDING_PROOF",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3462,
                                    "name": "Identifier",
                                    "src": "4284:6:6"
                                  }
                                ],
                                "id": 3463,
                                "name": "MemberAccess",
                                "src": "4284:33:6"
                              }
                            ],
                            "id": 3464,
                            "name": "FunctionCall",
                            "src": "4278:40:6"
                          }
                        ],
                        "id": 3465,
                        "name": "BinaryOperation",
                        "src": "4259:59:6"
                      }
                    ],
                    "id": 3466,
                    "name": "Return",
                    "src": "4252:66:6"
                  }
                ],
                "id": 3467,
                "name": "Block",
                "src": "4242:83:6"
              }
            ],
            "id": 3468,
            "name": "FunctionDefinition",
            "src": "4117:208:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inFailedSetup",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3484,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3469,
                        "name": "UserDefinedTypeName",
                        "src": "4354:20:6"
                      }
                    ],
                    "id": 3470,
                    "name": "VariableDeclaration",
                    "src": "4354:31:6"
                  }
                ],
                "id": 3471,
                "name": "ParameterList",
                "src": "4353:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3484,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3472,
                        "name": "ElementaryTypeName",
                        "src": "4434:4:6"
                      }
                    ],
                    "id": 3473,
                    "name": "VariableDeclaration",
                    "src": "4434:4:6"
                  }
                ],
                "id": 3474,
                "name": "ParameterList",
                "src": "4433:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3474
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3470,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3475,
                                "name": "Identifier",
                                "src": "4461:2:6"
                              }
                            ],
                            "id": 3476,
                            "name": "MemberAccess",
                            "src": "4461:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3477,
                                "name": "ElementaryTypeNameExpression",
                                "src": "4480:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "FAILED_SETUP",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3478,
                                    "name": "Identifier",
                                    "src": "4486:6:6"
                                  }
                                ],
                                "id": 3479,
                                "name": "MemberAccess",
                                "src": "4486:19:6"
                              }
                            ],
                            "id": 3480,
                            "name": "FunctionCall",
                            "src": "4480:26:6"
                          }
                        ],
                        "id": 3481,
                        "name": "BinaryOperation",
                        "src": "4461:45:6"
                      }
                    ],
                    "id": 3482,
                    "name": "Return",
                    "src": "4454:52:6"
                  }
                ],
                "id": 3483,
                "name": "Block",
                "src": "4444:69:6"
              }
            ],
            "id": 3484,
            "name": "FunctionDefinition",
            "src": "4331:182:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inActive",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3500,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3485,
                        "name": "UserDefinedTypeName",
                        "src": "4537:20:6"
                      }
                    ],
                    "id": 3486,
                    "name": "VariableDeclaration",
                    "src": "4537:31:6"
                  }
                ],
                "id": 3487,
                "name": "ParameterList",
                "src": "4536:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3500,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3488,
                        "name": "ElementaryTypeName",
                        "src": "4617:4:6"
                      }
                    ],
                    "id": 3489,
                    "name": "VariableDeclaration",
                    "src": "4617:4:6"
                  }
                ],
                "id": 3490,
                "name": "ParameterList",
                "src": "4616:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3490
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3486,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3491,
                                "name": "Identifier",
                                "src": "4644:2:6"
                              }
                            ],
                            "id": 3492,
                            "name": "MemberAccess",
                            "src": "4644:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3493,
                                "name": "ElementaryTypeNameExpression",
                                "src": "4663:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "ACTIVE",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3494,
                                    "name": "Identifier",
                                    "src": "4669:6:6"
                                  }
                                ],
                                "id": 3495,
                                "name": "MemberAccess",
                                "src": "4669:13:6"
                              }
                            ],
                            "id": 3496,
                            "name": "FunctionCall",
                            "src": "4663:20:6"
                          }
                        ],
                        "id": 3497,
                        "name": "BinaryOperation",
                        "src": "4644:39:6"
                      }
                    ],
                    "id": 3498,
                    "name": "Return",
                    "src": "4637:46:6"
                  }
                ],
                "id": 3499,
                "name": "Block",
                "src": "4627:63:6"
              }
            ],
            "id": 3500,
            "name": "FunctionDefinition",
            "src": "4519:171:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inAwaitingWithdrawalSignature",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3516,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3501,
                        "name": "UserDefinedTypeName",
                        "src": "4735:20:6"
                      }
                    ],
                    "id": 3502,
                    "name": "VariableDeclaration",
                    "src": "4735:31:6"
                  }
                ],
                "id": 3503,
                "name": "ParameterList",
                "src": "4734:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3516,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3504,
                        "name": "ElementaryTypeName",
                        "src": "4815:4:6"
                      }
                    ],
                    "id": 3505,
                    "name": "VariableDeclaration",
                    "src": "4815:4:6"
                  }
                ],
                "id": 3506,
                "name": "ParameterList",
                "src": "4814:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3506
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3502,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3507,
                                "name": "Identifier",
                                "src": "4842:2:6"
                              }
                            ],
                            "id": 3508,
                            "name": "MemberAccess",
                            "src": "4842:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3509,
                                "name": "ElementaryTypeNameExpression",
                                "src": "4861:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "AWAITING_WITHDRAWAL_SIGNATURE",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3510,
                                    "name": "Identifier",
                                    "src": "4867:6:6"
                                  }
                                ],
                                "id": 3511,
                                "name": "MemberAccess",
                                "src": "4867:36:6"
                              }
                            ],
                            "id": 3512,
                            "name": "FunctionCall",
                            "src": "4861:43:6"
                          }
                        ],
                        "id": 3513,
                        "name": "BinaryOperation",
                        "src": "4842:62:6"
                      }
                    ],
                    "id": 3514,
                    "name": "Return",
                    "src": "4835:69:6"
                  }
                ],
                "id": 3515,
                "name": "Block",
                "src": "4825:86:6"
              }
            ],
            "id": 3516,
            "name": "FunctionDefinition",
            "src": "4696:215:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inAwaitingWithdrawalProof",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3532,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3517,
                        "name": "UserDefinedTypeName",
                        "src": "4952:20:6"
                      }
                    ],
                    "id": 3518,
                    "name": "VariableDeclaration",
                    "src": "4952:31:6"
                  }
                ],
                "id": 3519,
                "name": "ParameterList",
                "src": "4951:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3532,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3520,
                        "name": "ElementaryTypeName",
                        "src": "5032:4:6"
                      }
                    ],
                    "id": 3521,
                    "name": "VariableDeclaration",
                    "src": "5032:4:6"
                  }
                ],
                "id": 3522,
                "name": "ParameterList",
                "src": "5031:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3522
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3518,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3523,
                                "name": "Identifier",
                                "src": "5059:2:6"
                              }
                            ],
                            "id": 3524,
                            "name": "MemberAccess",
                            "src": "5059:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3525,
                                "name": "ElementaryTypeNameExpression",
                                "src": "5078:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "AWAITING_WITHDRAWAL_PROOF",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3526,
                                    "name": "Identifier",
                                    "src": "5084:6:6"
                                  }
                                ],
                                "id": 3527,
                                "name": "MemberAccess",
                                "src": "5084:32:6"
                              }
                            ],
                            "id": 3528,
                            "name": "FunctionCall",
                            "src": "5078:39:6"
                          }
                        ],
                        "id": 3529,
                        "name": "BinaryOperation",
                        "src": "5059:58:6"
                      }
                    ],
                    "id": 3530,
                    "name": "Return",
                    "src": "5052:65:6"
                  }
                ],
                "id": 3531,
                "name": "Block",
                "src": "5042:82:6"
              }
            ],
            "id": 3532,
            "name": "FunctionDefinition",
            "src": "4917:207:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inRedeemed",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3548,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3533,
                        "name": "UserDefinedTypeName",
                        "src": "5150:20:6"
                      }
                    ],
                    "id": 3534,
                    "name": "VariableDeclaration",
                    "src": "5150:31:6"
                  }
                ],
                "id": 3535,
                "name": "ParameterList",
                "src": "5149:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3548,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3536,
                        "name": "ElementaryTypeName",
                        "src": "5230:4:6"
                      }
                    ],
                    "id": 3537,
                    "name": "VariableDeclaration",
                    "src": "5230:4:6"
                  }
                ],
                "id": 3538,
                "name": "ParameterList",
                "src": "5229:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3538
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3534,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3539,
                                "name": "Identifier",
                                "src": "5257:2:6"
                              }
                            ],
                            "id": 3540,
                            "name": "MemberAccess",
                            "src": "5257:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3541,
                                "name": "ElementaryTypeNameExpression",
                                "src": "5276:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "REDEEMED",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3542,
                                    "name": "Identifier",
                                    "src": "5282:6:6"
                                  }
                                ],
                                "id": 3543,
                                "name": "MemberAccess",
                                "src": "5282:15:6"
                              }
                            ],
                            "id": 3544,
                            "name": "FunctionCall",
                            "src": "5276:22:6"
                          }
                        ],
                        "id": 3545,
                        "name": "BinaryOperation",
                        "src": "5257:41:6"
                      }
                    ],
                    "id": 3546,
                    "name": "Return",
                    "src": "5250:48:6"
                  }
                ],
                "id": 3547,
                "name": "Block",
                "src": "5240:65:6"
              }
            ],
            "id": 3548,
            "name": "FunctionDefinition",
            "src": "5130:175:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inCourtesyCall",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3564,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3549,
                        "name": "UserDefinedTypeName",
                        "src": "5335:20:6"
                      }
                    ],
                    "id": 3550,
                    "name": "VariableDeclaration",
                    "src": "5335:31:6"
                  }
                ],
                "id": 3551,
                "name": "ParameterList",
                "src": "5334:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3564,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3552,
                        "name": "ElementaryTypeName",
                        "src": "5415:4:6"
                      }
                    ],
                    "id": 3553,
                    "name": "VariableDeclaration",
                    "src": "5415:4:6"
                  }
                ],
                "id": 3554,
                "name": "ParameterList",
                "src": "5414:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3554
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3550,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3555,
                                "name": "Identifier",
                                "src": "5442:2:6"
                              }
                            ],
                            "id": 3556,
                            "name": "MemberAccess",
                            "src": "5442:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3557,
                                "name": "ElementaryTypeNameExpression",
                                "src": "5461:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "COURTESY_CALL",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3558,
                                    "name": "Identifier",
                                    "src": "5467:6:6"
                                  }
                                ],
                                "id": 3559,
                                "name": "MemberAccess",
                                "src": "5467:20:6"
                              }
                            ],
                            "id": 3560,
                            "name": "FunctionCall",
                            "src": "5461:27:6"
                          }
                        ],
                        "id": 3561,
                        "name": "BinaryOperation",
                        "src": "5442:46:6"
                      }
                    ],
                    "id": 3562,
                    "name": "Return",
                    "src": "5435:53:6"
                  }
                ],
                "id": 3563,
                "name": "Block",
                "src": "5425:70:6"
              }
            ],
            "id": 3564,
            "name": "FunctionDefinition",
            "src": "5311:184:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inFraudLiquidationInProgress",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3580,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3565,
                        "name": "UserDefinedTypeName",
                        "src": "5539:20:6"
                      }
                    ],
                    "id": 3566,
                    "name": "VariableDeclaration",
                    "src": "5539:31:6"
                  }
                ],
                "id": 3567,
                "name": "ParameterList",
                "src": "5538:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3580,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3568,
                        "name": "ElementaryTypeName",
                        "src": "5619:4:6"
                      }
                    ],
                    "id": 3569,
                    "name": "VariableDeclaration",
                    "src": "5619:4:6"
                  }
                ],
                "id": 3570,
                "name": "ParameterList",
                "src": "5618:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3570
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3566,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3571,
                                "name": "Identifier",
                                "src": "5646:2:6"
                              }
                            ],
                            "id": 3572,
                            "name": "MemberAccess",
                            "src": "5646:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3573,
                                "name": "ElementaryTypeNameExpression",
                                "src": "5665:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "FRAUD_LIQUIDATION_IN_PROGRESS",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3574,
                                    "name": "Identifier",
                                    "src": "5671:6:6"
                                  }
                                ],
                                "id": 3575,
                                "name": "MemberAccess",
                                "src": "5671:36:6"
                              }
                            ],
                            "id": 3576,
                            "name": "FunctionCall",
                            "src": "5665:43:6"
                          }
                        ],
                        "id": 3577,
                        "name": "BinaryOperation",
                        "src": "5646:62:6"
                      }
                    ],
                    "id": 3578,
                    "name": "Return",
                    "src": "5639:69:6"
                  }
                ],
                "id": 3579,
                "name": "Block",
                "src": "5629:86:6"
              }
            ],
            "id": 3580,
            "name": "FunctionDefinition",
            "src": "5501:214:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inLiquidationInProgress",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3596,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3581,
                        "name": "UserDefinedTypeName",
                        "src": "5754:20:6"
                      }
                    ],
                    "id": 3582,
                    "name": "VariableDeclaration",
                    "src": "5754:31:6"
                  }
                ],
                "id": 3583,
                "name": "ParameterList",
                "src": "5753:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3596,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3584,
                        "name": "ElementaryTypeName",
                        "src": "5834:4:6"
                      }
                    ],
                    "id": 3585,
                    "name": "VariableDeclaration",
                    "src": "5834:4:6"
                  }
                ],
                "id": 3586,
                "name": "ParameterList",
                "src": "5833:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3586
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3582,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3587,
                                "name": "Identifier",
                                "src": "5861:2:6"
                              }
                            ],
                            "id": 3588,
                            "name": "MemberAccess",
                            "src": "5861:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3589,
                                "name": "ElementaryTypeNameExpression",
                                "src": "5880:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "LIQUIDATION_IN_PROGRESS",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3590,
                                    "name": "Identifier",
                                    "src": "5886:6:6"
                                  }
                                ],
                                "id": 3591,
                                "name": "MemberAccess",
                                "src": "5886:30:6"
                              }
                            ],
                            "id": 3592,
                            "name": "FunctionCall",
                            "src": "5880:37:6"
                          }
                        ],
                        "id": 3593,
                        "name": "BinaryOperation",
                        "src": "5861:56:6"
                      }
                    ],
                    "id": 3594,
                    "name": "Return",
                    "src": "5854:63:6"
                  }
                ],
                "id": 3595,
                "name": "Block",
                "src": "5844:80:6"
              }
            ],
            "id": 3596,
            "name": "FunctionDefinition",
            "src": "5721:203:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "inLiquidated",
              "scope": 3778,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3612,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3597,
                        "name": "UserDefinedTypeName",
                        "src": "5952:20:6"
                      }
                    ],
                    "id": 3598,
                    "name": "VariableDeclaration",
                    "src": "5952:31:6"
                  }
                ],
                "id": 3599,
                "name": "ParameterList",
                "src": "5951:33:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 3612,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 3600,
                        "name": "ElementaryTypeName",
                        "src": "6032:4:6"
                      }
                    ],
                    "id": 3601,
                    "name": "VariableDeclaration",
                    "src": "6032:4:6"
                  }
                ],
                "id": 3602,
                "name": "ParameterList",
                "src": "6031:6:6"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 3602
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3598,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3603,
                                "name": "Identifier",
                                "src": "6059:2:6"
                              }
                            ],
                            "id": 3604,
                            "name": "MemberAccess",
                            "src": "6059:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3605,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6078:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "LIQUIDATED",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3606,
                                    "name": "Identifier",
                                    "src": "6084:6:6"
                                  }
                                ],
                                "id": 3607,
                                "name": "MemberAccess",
                                "src": "6084:17:6"
                              }
                            ],
                            "id": 3608,
                            "name": "FunctionCall",
                            "src": "6078:24:6"
                          }
                        ],
                        "id": 3609,
                        "name": "BinaryOperation",
                        "src": "6059:43:6"
                      }
                    ],
                    "id": 3610,
                    "name": "Return",
                    "src": "6052:50:6"
                  }
                ],
                "id": 3611,
                "name": "Block",
                "src": "6042:67:6"
              }
            ],
            "id": 3612,
            "name": "FunctionDefinition",
            "src": "5930:179:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setAwaitingSignerSetup",
              "scope": 3778,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3627,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3613,
                        "name": "UserDefinedTypeName",
                        "src": "6147:20:6"
                      }
                    ],
                    "id": 3614,
                    "name": "VariableDeclaration",
                    "src": "6147:31:6"
                  }
                ],
                "id": 3615,
                "name": "ParameterList",
                "src": "6146:33:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3616,
                "name": "ParameterList",
                "src": "6189:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3614,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3617,
                                "name": "Identifier",
                                "src": "6199:2:6"
                              }
                            ],
                            "id": 3619,
                            "name": "MemberAccess",
                            "src": "6199:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3620,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6217:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "AWAITING_SIGNER_SETUP",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3621,
                                    "name": "Identifier",
                                    "src": "6223:6:6"
                                  }
                                ],
                                "id": 3622,
                                "name": "MemberAccess",
                                "src": "6223:28:6"
                              }
                            ],
                            "id": 3623,
                            "name": "FunctionCall",
                            "src": "6217:35:6"
                          }
                        ],
                        "id": 3624,
                        "name": "Assignment",
                        "src": "6199:53:6"
                      }
                    ],
                    "id": 3625,
                    "name": "ExpressionStatement",
                    "src": "6199:53:6"
                  }
                ],
                "id": 3626,
                "name": "Block",
                "src": "6189:70:6"
              }
            ],
            "id": 3627,
            "name": "FunctionDefinition",
            "src": "6115:144:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setAwaitingBTCFundingProof",
              "scope": 3778,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3642,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3628,
                        "name": "UserDefinedTypeName",
                        "src": "6301:20:6"
                      }
                    ],
                    "id": 3629,
                    "name": "VariableDeclaration",
                    "src": "6301:31:6"
                  }
                ],
                "id": 3630,
                "name": "ParameterList",
                "src": "6300:33:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3631,
                "name": "ParameterList",
                "src": "6355:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3629,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3632,
                                "name": "Identifier",
                                "src": "6365:2:6"
                              }
                            ],
                            "id": 3634,
                            "name": "MemberAccess",
                            "src": "6365:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3635,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6383:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "AWAITING_BTC_FUNDING_PROOF",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3636,
                                    "name": "Identifier",
                                    "src": "6389:6:6"
                                  }
                                ],
                                "id": 3637,
                                "name": "MemberAccess",
                                "src": "6389:33:6"
                              }
                            ],
                            "id": 3638,
                            "name": "FunctionCall",
                            "src": "6383:40:6"
                          }
                        ],
                        "id": 3639,
                        "name": "Assignment",
                        "src": "6365:58:6"
                      }
                    ],
                    "id": 3640,
                    "name": "ExpressionStatement",
                    "src": "6365:58:6"
                  }
                ],
                "id": 3641,
                "name": "Block",
                "src": "6355:75:6"
              }
            ],
            "id": 3642,
            "name": "FunctionDefinition",
            "src": "6265:165:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setFailedSetup",
              "scope": 3778,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3657,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3643,
                        "name": "UserDefinedTypeName",
                        "src": "6460:20:6"
                      }
                    ],
                    "id": 3644,
                    "name": "VariableDeclaration",
                    "src": "6460:31:6"
                  }
                ],
                "id": 3645,
                "name": "ParameterList",
                "src": "6459:33:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3646,
                "name": "ParameterList",
                "src": "6502:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3644,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3647,
                                "name": "Identifier",
                                "src": "6512:2:6"
                              }
                            ],
                            "id": 3649,
                            "name": "MemberAccess",
                            "src": "6512:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3650,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6530:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "FAILED_SETUP",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3651,
                                    "name": "Identifier",
                                    "src": "6536:6:6"
                                  }
                                ],
                                "id": 3652,
                                "name": "MemberAccess",
                                "src": "6536:19:6"
                              }
                            ],
                            "id": 3653,
                            "name": "FunctionCall",
                            "src": "6530:26:6"
                          }
                        ],
                        "id": 3654,
                        "name": "Assignment",
                        "src": "6512:44:6"
                      }
                    ],
                    "id": 3655,
                    "name": "ExpressionStatement",
                    "src": "6512:44:6"
                  }
                ],
                "id": 3656,
                "name": "Block",
                "src": "6502:61:6"
              }
            ],
            "id": 3657,
            "name": "FunctionDefinition",
            "src": "6436:127:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setActive",
              "scope": 3778,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3672,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3658,
                        "name": "UserDefinedTypeName",
                        "src": "6588:20:6"
                      }
                    ],
                    "id": 3659,
                    "name": "VariableDeclaration",
                    "src": "6588:31:6"
                  }
                ],
                "id": 3660,
                "name": "ParameterList",
                "src": "6587:33:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3661,
                "name": "ParameterList",
                "src": "6630:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3659,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3662,
                                "name": "Identifier",
                                "src": "6640:2:6"
                              }
                            ],
                            "id": 3664,
                            "name": "MemberAccess",
                            "src": "6640:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3665,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6658:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "ACTIVE",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3666,
                                    "name": "Identifier",
                                    "src": "6664:6:6"
                                  }
                                ],
                                "id": 3667,
                                "name": "MemberAccess",
                                "src": "6664:13:6"
                              }
                            ],
                            "id": 3668,
                            "name": "FunctionCall",
                            "src": "6658:20:6"
                          }
                        ],
                        "id": 3669,
                        "name": "Assignment",
                        "src": "6640:38:6"
                      }
                    ],
                    "id": 3670,
                    "name": "ExpressionStatement",
                    "src": "6640:38:6"
                  }
                ],
                "id": 3671,
                "name": "Block",
                "src": "6630:55:6"
              }
            ],
            "id": 3672,
            "name": "FunctionDefinition",
            "src": "6569:116:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setAwaitingWithdrawalSignature",
              "scope": 3778,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3687,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3673,
                        "name": "UserDefinedTypeName",
                        "src": "6731:20:6"
                      }
                    ],
                    "id": 3674,
                    "name": "VariableDeclaration",
                    "src": "6731:31:6"
                  }
                ],
                "id": 3675,
                "name": "ParameterList",
                "src": "6730:33:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3676,
                "name": "ParameterList",
                "src": "6785:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3674,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3677,
                                "name": "Identifier",
                                "src": "6795:2:6"
                              }
                            ],
                            "id": 3679,
                            "name": "MemberAccess",
                            "src": "6795:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3680,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6813:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "AWAITING_WITHDRAWAL_SIGNATURE",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3681,
                                    "name": "Identifier",
                                    "src": "6819:6:6"
                                  }
                                ],
                                "id": 3682,
                                "name": "MemberAccess",
                                "src": "6819:36:6"
                              }
                            ],
                            "id": 3683,
                            "name": "FunctionCall",
                            "src": "6813:43:6"
                          }
                        ],
                        "id": 3684,
                        "name": "Assignment",
                        "src": "6795:61:6"
                      }
                    ],
                    "id": 3685,
                    "name": "ExpressionStatement",
                    "src": "6795:61:6"
                  }
                ],
                "id": 3686,
                "name": "Block",
                "src": "6785:78:6"
              }
            ],
            "id": 3687,
            "name": "FunctionDefinition",
            "src": "6691:172:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setAwaitingWithdrawalProof",
              "scope": 3778,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3702,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3688,
                        "name": "UserDefinedTypeName",
                        "src": "6905:20:6"
                      }
                    ],
                    "id": 3689,
                    "name": "VariableDeclaration",
                    "src": "6905:31:6"
                  }
                ],
                "id": 3690,
                "name": "ParameterList",
                "src": "6904:33:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3691,
                "name": "ParameterList",
                "src": "6959:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3689,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3692,
                                "name": "Identifier",
                                "src": "6969:2:6"
                              }
                            ],
                            "id": 3694,
                            "name": "MemberAccess",
                            "src": "6969:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3695,
                                "name": "ElementaryTypeNameExpression",
                                "src": "6987:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "AWAITING_WITHDRAWAL_PROOF",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3696,
                                    "name": "Identifier",
                                    "src": "6993:6:6"
                                  }
                                ],
                                "id": 3697,
                                "name": "MemberAccess",
                                "src": "6993:32:6"
                              }
                            ],
                            "id": 3698,
                            "name": "FunctionCall",
                            "src": "6987:39:6"
                          }
                        ],
                        "id": 3699,
                        "name": "Assignment",
                        "src": "6969:57:6"
                      }
                    ],
                    "id": 3700,
                    "name": "ExpressionStatement",
                    "src": "6969:57:6"
                  }
                ],
                "id": 3701,
                "name": "Block",
                "src": "6959:74:6"
              }
            ],
            "id": 3702,
            "name": "FunctionDefinition",
            "src": "6869:164:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setRedeemed",
              "scope": 3778,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3717,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3703,
                        "name": "UserDefinedTypeName",
                        "src": "7060:20:6"
                      }
                    ],
                    "id": 3704,
                    "name": "VariableDeclaration",
                    "src": "7060:31:6"
                  }
                ],
                "id": 3705,
                "name": "ParameterList",
                "src": "7059:33:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3706,
                "name": "ParameterList",
                "src": "7102:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3704,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3707,
                                "name": "Identifier",
                                "src": "7112:2:6"
                              }
                            ],
                            "id": 3709,
                            "name": "MemberAccess",
                            "src": "7112:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3710,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7130:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "REDEEMED",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3711,
                                    "name": "Identifier",
                                    "src": "7136:6:6"
                                  }
                                ],
                                "id": 3712,
                                "name": "MemberAccess",
                                "src": "7136:15:6"
                              }
                            ],
                            "id": 3713,
                            "name": "FunctionCall",
                            "src": "7130:22:6"
                          }
                        ],
                        "id": 3714,
                        "name": "Assignment",
                        "src": "7112:40:6"
                      }
                    ],
                    "id": 3715,
                    "name": "ExpressionStatement",
                    "src": "7112:40:6"
                  }
                ],
                "id": 3716,
                "name": "Block",
                "src": "7102:57:6"
              }
            ],
            "id": 3717,
            "name": "FunctionDefinition",
            "src": "7039:120:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setCourtesyCall",
              "scope": 3778,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3732,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3718,
                        "name": "UserDefinedTypeName",
                        "src": "7190:20:6"
                      }
                    ],
                    "id": 3719,
                    "name": "VariableDeclaration",
                    "src": "7190:31:6"
                  }
                ],
                "id": 3720,
                "name": "ParameterList",
                "src": "7189:33:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3721,
                "name": "ParameterList",
                "src": "7232:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3719,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3722,
                                "name": "Identifier",
                                "src": "7242:2:6"
                              }
                            ],
                            "id": 3724,
                            "name": "MemberAccess",
                            "src": "7242:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3725,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7260:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "COURTESY_CALL",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3726,
                                    "name": "Identifier",
                                    "src": "7266:6:6"
                                  }
                                ],
                                "id": 3727,
                                "name": "MemberAccess",
                                "src": "7266:20:6"
                              }
                            ],
                            "id": 3728,
                            "name": "FunctionCall",
                            "src": "7260:27:6"
                          }
                        ],
                        "id": 3729,
                        "name": "Assignment",
                        "src": "7242:45:6"
                      }
                    ],
                    "id": 3730,
                    "name": "ExpressionStatement",
                    "src": "7242:45:6"
                  }
                ],
                "id": 3731,
                "name": "Block",
                "src": "7232:62:6"
              }
            ],
            "id": 3732,
            "name": "FunctionDefinition",
            "src": "7165:129:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setFraudLiquidationInProgress",
              "scope": 3778,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3747,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3733,
                        "name": "UserDefinedTypeName",
                        "src": "7339:20:6"
                      }
                    ],
                    "id": 3734,
                    "name": "VariableDeclaration",
                    "src": "7339:31:6"
                  }
                ],
                "id": 3735,
                "name": "ParameterList",
                "src": "7338:33:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3736,
                "name": "ParameterList",
                "src": "7393:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3734,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3737,
                                "name": "Identifier",
                                "src": "7403:2:6"
                              }
                            ],
                            "id": 3739,
                            "name": "MemberAccess",
                            "src": "7403:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3740,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7421:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "FRAUD_LIQUIDATION_IN_PROGRESS",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3741,
                                    "name": "Identifier",
                                    "src": "7427:6:6"
                                  }
                                ],
                                "id": 3742,
                                "name": "MemberAccess",
                                "src": "7427:36:6"
                              }
                            ],
                            "id": 3743,
                            "name": "FunctionCall",
                            "src": "7421:43:6"
                          }
                        ],
                        "id": 3744,
                        "name": "Assignment",
                        "src": "7403:61:6"
                      }
                    ],
                    "id": 3745,
                    "name": "ExpressionStatement",
                    "src": "7403:61:6"
                  }
                ],
                "id": 3746,
                "name": "Block",
                "src": "7393:78:6"
              }
            ],
            "id": 3747,
            "name": "FunctionDefinition",
            "src": "7300:171:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setLiquidationInProgress",
              "scope": 3778,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3762,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3748,
                        "name": "UserDefinedTypeName",
                        "src": "7511:20:6"
                      }
                    ],
                    "id": 3749,
                    "name": "VariableDeclaration",
                    "src": "7511:31:6"
                  }
                ],
                "id": 3750,
                "name": "ParameterList",
                "src": "7510:33:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3751,
                "name": "ParameterList",
                "src": "7565:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3749,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3752,
                                "name": "Identifier",
                                "src": "7575:2:6"
                              }
                            ],
                            "id": 3754,
                            "name": "MemberAccess",
                            "src": "7575:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3755,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7593:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "LIQUIDATION_IN_PROGRESS",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3756,
                                    "name": "Identifier",
                                    "src": "7599:6:6"
                                  }
                                ],
                                "id": 3757,
                                "name": "MemberAccess",
                                "src": "7599:30:6"
                              }
                            ],
                            "id": 3758,
                            "name": "FunctionCall",
                            "src": "7593:37:6"
                          }
                        ],
                        "id": 3759,
                        "name": "Assignment",
                        "src": "7575:55:6"
                      }
                    ],
                    "id": 3760,
                    "name": "ExpressionStatement",
                    "src": "7575:55:6"
                  }
                ],
                "id": 3761,
                "name": "Block",
                "src": "7565:72:6"
              }
            ],
            "id": 3762,
            "name": "FunctionDefinition",
            "src": "7477:160:6"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setLiquidated",
              "scope": 3778,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_d",
                      "scope": 3777,
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "type": "struct DepositUtils.Deposit",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "DepositUtils.Deposit",
                          "referencedDeclaration": 3893,
                          "type": "struct DepositUtils.Deposit"
                        },
                        "id": 3763,
                        "name": "UserDefinedTypeName",
                        "src": "7666:20:6"
                      }
                    ],
                    "id": 3764,
                    "name": "VariableDeclaration",
                    "src": "7666:31:6"
                  }
                ],
                "id": 3765,
                "name": "ParameterList",
                "src": "7665:33:6"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 3766,
                "name": "ParameterList",
                "src": "7708:0:6"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "currentState",
                              "referencedDeclaration": 3840,
                              "type": "uint8"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3764,
                                  "type": "struct DepositUtils.Deposit storage pointer",
                                  "value": "_d"
                                },
                                "id": 3767,
                                "name": "Identifier",
                                "src": "7718:2:6"
                              }
                            ],
                            "id": 3769,
                            "name": "MemberAccess",
                            "src": "7718:15:6"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint8",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_enum$_States_$3286",
                                      "typeString": "enum DepositStates.States"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint8)",
                                  "value": "uint8"
                                },
                                "id": 3770,
                                "name": "ElementaryTypeNameExpression",
                                "src": "7736:5:6"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "LIQUIDATED",
                                  "referencedDeclaration": null,
                                  "type": "enum DepositStates.States"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3286,
                                      "type": "type(enum DepositStates.States)",
                                      "value": "States"
                                    },
                                    "id": 3771,
                                    "name": "Identifier",
                                    "src": "7742:6:6"
                                  }
                                ],
                                "id": 3772,
                                "name": "MemberAccess",
                                "src": "7742:17:6"
                              }
                            ],
                            "id": 3773,
                            "name": "FunctionCall",
                            "src": "7736:24:6"
                          }
                        ],
                        "id": 3774,
                        "name": "Assignment",
                        "src": "7718:42:6"
                      }
                    ],
                    "id": 3775,
                    "name": "ExpressionStatement",
                    "src": "7718:42:6"
                  }
                ],
                "id": 3776,
                "name": "Block",
                "src": "7708:59:6"
              }
            ],
            "id": 3777,
            "name": "FunctionDefinition",
            "src": "7643:124:6"
          }
        ],
        "id": 3778,
        "name": "ContractDefinition",
        "src": "75:7694:6"
      }
    ],
    "id": 3779,
    "name": "SourceUnit",
    "src": "0:7770:6"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.17+commit.d19bba13.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {},
      "address": "0xe79c67D88274e07F0cecB2455DCabe23B304b525",
      "transactionHash": "0x3cd9550a94f288ea0d7c3436ad68c073961cbf373df6c93806be6086390430b4"
    }
  },
  "schemaVersion": "3.3.4",
  "updatedAt": "2021-11-23T12:01:17.154Z",
  "networkType": "ethereum",
  "devdoc": {
    "methods": {
      "inEndState(DepositUtils.Deposit storage)": {
        "details": "This checks on any halt state, regardless of triggering circumstances.",
        "params": {
          "_d": "Deposit storage pointer."
        },
        "return": "True if contract has halted permanently."
      },
      "inFunding(DepositUtils.Deposit storage)": {
        "details": "This checks on the funding flow happy path, not the fraud path.",
        "params": {
          "_d": "Deposit storage pointer."
        },
        "return": "True if contract is currently in the funding flow else False."
      },
      "inRedeemableState(DepositUtils.Deposit storage)": {
        "details": "Redemption is available from active and courtesy call.",
        "params": {
          "_d": "Deposit storage pointer."
        },
        "return": "True if available, False otherwise."
      },
      "inRedemption(DepositUtils.Deposit storage)": {
        "details": "This checks on the redemption flow, not the REDEEMED termination state.",
        "params": {
          "_d": "Deposit storage pointer."
        },
        "return": "True if contract is currently in the redemption flow else False."
      },
      "inSignerLiquidation(DepositUtils.Deposit storage)": {
        "details": "This could be caused by fraud, or by an unfilled margin call.",
        "params": {
          "_d": "Deposit storage pointer."
        },
        "return": "True if contract is currently in the liquidaton flow else False."
      },
      "inStart(DepositUtils.Deposit storage)": {
        "details": "This checks on the funding flow happy path, not the fraud path.",
        "params": {
          "_d": "Deposit storage pointer."
        },
        "return": "True if contract is currently in the start state else False."
      }
    }
  },
  "userdoc": {
    "methods": {
      "inEndState(DepositUtils.Deposit storage)": {
        "notice": "Check if the contract has halted."
      },
      "inFunding(DepositUtils.Deposit storage)": {
        "notice": "Check if the contract is currently in the funding flow."
      },
      "inRedeemableState(DepositUtils.Deposit storage)": {
        "notice": "Check if the contract is available for a redemption request."
      },
      "inRedemption(DepositUtils.Deposit storage)": {
        "notice": "Check if the contract is currently in the redepmtion flow."
      },
      "inSignerLiquidation(DepositUtils.Deposit storage)": {
        "notice": "Check if the contract is currently in the signer liquidation flow."
      },
      "inStart(DepositUtils.Deposit storage)": {
        "notice": "Check if the contract is currently in the start state (awaiting setup)."
      }
    }
  }
}