{
  "contractName": "DepositLog",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "CourtesyCalled",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_keepAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Created",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "ExitedCourtesyCall",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "FraudDuringSetup",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_txid",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Funded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_abortOutputScript",
          "type": "bytes"
        }
      ],
      "name": "FunderAbortRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_r",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_s",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "GotRedemptionSignature",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Liquidated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_txid",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "Redeemed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "_requester",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_utxoValue",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_redeemerOutputScript",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_requestedFee",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "_outpoint",
          "type": "bytes"
        }
      ],
      "name": "RedemptionRequested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_signingGroupPubkeyX",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "_signingGroupPubkeyY",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "RegisteredPubkey",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "SetupFailed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "_depositContractAddress",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "_wasFraud",
          "type": "bool"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_timestamp",
          "type": "uint256"
        }
      ],
      "name": "StartedLiquidation",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_keepAddress",
          "type": "address"
        }
      ],
      "name": "logCreated",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "address",
          "name": "_requester",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "_utxoValue",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_redeemerOutputScript",
          "type": "bytes"
        },
        {
          "internalType": "uint256",
          "name": "_requestedFee",
          "type": "uint256"
        },
        {
          "internalType": "bytes",
          "name": "_outpoint",
          "type": "bytes"
        }
      ],
      "name": "logRedemptionRequested",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_digest",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_r",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_s",
          "type": "bytes32"
        }
      ],
      "name": "logGotRedemptionSignature",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_signingGroupPubkeyX",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_signingGroupPubkeyY",
          "type": "bytes32"
        }
      ],
      "name": "logRegisteredPubkey",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logSetupFailed",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes",
          "name": "_abortOutputScript",
          "type": "bytes"
        }
      ],
      "name": "logFunderRequestedAbort",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logFraudDuringSetup",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_txid",
          "type": "bytes32"
        }
      ],
      "name": "logFunded",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logCourtesyCalled",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bool",
          "name": "_wasFraud",
          "type": "bool"
        }
      ],
      "name": "logStartedLiquidation",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_txid",
          "type": "bytes32"
        }
      ],
      "name": "logRedeemed",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logLiquidated",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "logExitedCourtesyCall",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "internalType": "address",
          "name": "_caller",
          "type": "address"
        }
      ],
      "name": "approvedToLog",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.17+commit.d19bba13\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"CourtesyCalled\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_keepAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"Created\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"ExitedCourtesyCall\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"FraudDuringSetup\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_txid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"Funded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_abortOutputScript\",\"type\":\"bytes\"}],\"name\":\"FunderAbortRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"GotRedemptionSignature\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"Liquidated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_txid\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"Redeemed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_requester\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_utxoValue\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_redeemerOutputScript\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_requestedFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_outpoint\",\"type\":\"bytes\"}],\"name\":\"RedemptionRequested\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_signingGroupPubkeyX\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_signingGroupPubkeyY\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"RegisteredPubkey\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"SetupFailed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"_depositContractAddress\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_wasFraud\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_timestamp\",\"type\":\"uint256\"}],\"name\":\"StartedLiquidation\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_caller\",\"type\":\"address\"}],\"name\":\"approvedToLog\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logCourtesyCalled\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_keepAddress\",\"type\":\"address\"}],\"name\":\"logCreated\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logExitedCourtesyCall\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logFraudDuringSetup\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_txid\",\"type\":\"bytes32\"}],\"name\":\"logFunded\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_abortOutputScript\",\"type\":\"bytes\"}],\"name\":\"logFunderRequestedAbort\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_s\",\"type\":\"bytes32\"}],\"name\":\"logGotRedemptionSignature\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logLiquidated\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_txid\",\"type\":\"bytes32\"}],\"name\":\"logRedeemed\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_requester\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_digest\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_utxoValue\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_redeemerOutputScript\",\"type\":\"bytes\"},{\"internalType\":\"uint256\",\"name\":\"_requestedFee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_outpoint\",\"type\":\"bytes\"}],\"name\":\"logRedemptionRequested\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_signingGroupPubkeyX\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_signingGroupPubkeyY\",\"type\":\"bytes32\"}],\"name\":\"logRegisteredPubkey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"logSetupFailed\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_wasFraud\",\"type\":\"bool\"}],\"name\":\"logStartedLiquidation\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{\"approvedToLog(address)\":{\"details\":\"checks tbtcDepositToken to see if the caller represents                     an existing deposit.                     We don't require this, so deposits are not bricked if the system borks.\",\"params\":{\"_caller\":\"The address of the calling contract.\"},\"return\":\"True if approved, otherwise false.\"},\"logCourtesyCalled()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logCreated(address)\":{\"details\":\"We append the sender, which is the deposit contract that called.\",\"params\":{\"_keepAddress\":\"The address of the associated keep.\"},\"return\":\"True if successful, else revert.\"},\"logExitedCourtesyCall()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logFraudDuringSetup()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logFunded(bytes32)\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logFunderRequestedAbort(bytes)\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logGotRedemptionSignature(bytes32,bytes32,bytes32)\":{\"details\":\"We append the sender, which is the deposit contract that called.\",\"params\":{\"_digest\":\"signed digest.\",\"_r\":\"signature r value.\",\"_s\":\"signature s value.\"}},\"logLiquidated()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logRedeemed(bytes32)\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logRedemptionRequested(address,bytes32,uint256,bytes,uint256,bytes)\":{\"details\":\"This is the only event without an explicit timestamp.\",\"params\":{\"_digest\":\"The calculated sighash digest.\",\"_outpoint\":\"The 36 byte outpoint.\",\"_redeemerOutputScript\":\"The redeemer's length-prefixed output script.\",\"_requestedFee\":\"The requester or bump-system specified fee.\",\"_requester\":\"The ethereum address of the requester.\",\"_utxoValue\":\"The size of the utxo in sat.\"},\"return\":\"True if successful, else revert.\"},\"logRegisteredPubkey(bytes32,bytes32)\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logSetupFailed()\":{\"details\":\"We append the sender, which is the deposit contract that called.\"},\"logStartedLiquidation(bool)\":{\"details\":\"We append the sender, which is the deposit contract that called.\",\"params\":{\"_wasFraud\":\"True if liquidating for fraud.\"}}}},\"userdoc\":{\"methods\":{\"approvedToLog(address)\":{\"notice\":\"Checks if an address is an allowed logger.\"},\"logCourtesyCalled()\":{\"notice\":\"Fires a CourtesyCalled event.\"},\"logCreated(address)\":{\"notice\":\"Fires a Created event.\"},\"logExitedCourtesyCall()\":{\"notice\":\"Fires a ExitedCourtesyCall event\"},\"logFraudDuringSetup()\":{\"notice\":\"Fires a FraudDuringSetup event.\"},\"logFunded(bytes32)\":{\"notice\":\"Fires a Funded event.\"},\"logFunderRequestedAbort(bytes)\":{\"notice\":\"Fires a FunderAbortRequested event.\"},\"logGotRedemptionSignature(bytes32,bytes32,bytes32)\":{\"notice\":\"Fires a GotRedemptionSignature event.\"},\"logLiquidated()\":{\"notice\":\"Fires a Liquidated event\"},\"logRedeemed(bytes32)\":{\"notice\":\"Fires a Redeemed event\"},\"logRedemptionRequested(address,bytes32,uint256,bytes,uint256,bytes)\":{\"notice\":\"Fires a RedemptionRequested event.\"},\"logRegisteredPubkey(bytes32,bytes32)\":{\"notice\":\"Fires a RegisteredPubkey event.\"},\"logSetupFailed()\":{\"notice\":\"Fires a SetupFailed event.\"},\"logStartedLiquidation(bool)\":{\"notice\":\"Fires a StartedLiquidation event.\"}}}},\"settings\":{\"compilationTarget\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/DepositLog.sol\":\"DepositLog\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/home/runner/work/tbtc/tbtc/solidity/contracts/DepositLog.sol\":{\"keccak256\":\"0xd2422abaf64bf2d28f4c0548bc31c3d0e4c5f3e4414486c149b773bea0c9db0a\",\"urls\":[\"bzz-raw://c4b0e3caea108ce67da5922906753dc1a1f87cee923e7c32260239150f2152bb\",\"dweb:/ipfs/QmcHcftf4M6ZyuFG725QiFGHuAtz6zDQZ9HCEaoP5Wb6Fd\"]},\"/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/DepositFactoryAuthority.sol\":{\"keccak256\":\"0xd8e81ec58dea6a6bcc554e8c7e6c58898ab11a410c3f61224330cbe833992add\",\"urls\":[\"bzz-raw://9d2b23cf1e2f98eb77acf6ae62933e48494113e1d6091146459fd79a635f1dcf\",\"dweb:/ipfs/QmPK3nTmcrScDavDSXGHvonhfik3BJ55qhwSnUmhzL5QUE\"]},\"/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCDepositToken.sol\":{\"keccak256\":\"0xd9238bbd83f5352706426103a0708ad7c00ffbd90340a4b3bab03d2c5371e48b\",\"urls\":[\"bzz-raw://f1fc94f00aeabd49bd0f8ecf372213e83c949454c28fa672a46dd12d9a0b4311\",\"dweb:/ipfs/QmaCzqi2g4GSvzHDDES61FauDmdTGGyZrCkK1BdxpMqYa3\"]},\"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/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": "0x608060405234801561001057600080fd5b50610cc6806100206000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063869f94691161008c578063c8fba24311610066578063c8fba24314610336578063ce2c07ce1461033e578063e2c50ad8146103e4578063f760621e146103ec576100ea565b8063869f9469146102d15780639ffb3862146102f4578063a831c8161461032e576100ea565b8063282bfd38116100c8578063282bfd38146102525780633aac3467146102785780636e1ba283146102975780637ed451a4146102b4576100ea565b806318e647dd146100ef57806322a147e61461024257806322e5724c1461024a575b600080fd5b610240600480360360c081101561010557600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561013c57600080fd5b82018360208201111561014e57600080fd5b8035906020019184600183028401116401000000008311171561017057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929584359590949093506040810192506020013590506401000000008111156101cb57600080fd5b8201836020820111156101dd57600080fd5b803590602001918460018302840111640100000000831117156101ff57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610415945050505050565b005b610240610586565b610240610602565b6102406004803603602081101561026857600080fd5b50356001600160a01b031661067e565b6102406004803603602081101561028e57600080fd5b50351515610705565b610240600480360360208110156102ad57600080fd5b5035610787565b610240600480360360208110156102ca57600080fd5b5035610805565b610240600480360360408110156102e757600080fd5b5080359060200135610883565b61031a6004803603602081101561030a57600080fd5b50356001600160a01b031661090d565b604080519115158252519081900360200190f35b61024061098d565b610240610a09565b6102406004803603602081101561035457600080fd5b81019060208101813564010000000081111561036f57600080fd5b82018360208201111561038157600080fd5b803590602001918460018302840111640100000000831117156103a357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a85945050505050565b610240610b65565b6102406004803603606081101561040257600080fd5b5080359060208101359060400135610be1565b61041e3361090d565b6104595760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b84866001600160a01b0316336001600160a01b03167f7959c380174061a21a3ba80243a032ba9cd10dc8bd1736d7e835c94e97a35a9887878787604051808581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b838110156104e05781810151838201526020016104c8565b50505050905090810190601f16801561050d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610540578181015183820152602001610528565b50505050905090810190601f16801561056d5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a4505050505050565b61058f3361090d565b6105ca5760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b60408051428152905133917f6e7b45210b79c12cd1332babd8d86c0bbb9ca898a89ce0404f17064dbfba18c0919081900360200190a2565b61060b3361090d565b6106465760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b60408051428152905133917f07f0eaafadb9abb1d28da85d4b4c74f1939fd61b535c7f5ab501f618f07e76ee919081900360200190a2565b6106873361090d565b6106c25760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b6040805142815290516001600160a01b0383169133917f822b3073be62c5c7f143c2dcd71ee266434ee935d90a1eec3be34710ac8ec1a29181900360200190a350565b61070e3361090d565b6107495760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b604080518215158152426020820152815133927fbef11c059eefba82a15aea8a3a89c86fd08d7711c88fa7daea2632a55488510c928290030190a250565b6107903361090d565b6107cb5760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b604080514281529051829133917f44b7f176bcc739b54bd0800fe491cbdea19df7d4d6b19c281462e6b4fc5043449181900360200190a350565b61080e3361090d565b6108495760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b604080514281529051829133917fe34c70bd3e03956978a5c76d2ea5f3a60819171afea6dee4fc12b2e45f72d43d9181900360200190a350565b61088c3361090d565b6108c75760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b60408051838152602081018390524281830152905133917f8ee737ab16909c4e9d1b750814a4393c9f84ab5d3a29c08c313b783fc846ae33919081900360600190a25050565b6000805460408051634f558e7960e01b81526001600160a01b03858116600483015291519190921691634f558e79916024808301926020929190829003018186803b15801561095b57600080fd5b505afa15801561096f573d6000803e3d6000fd5b505050506040513d602081101561098557600080fd5b505192915050565b6109963361090d565b6109d15760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b60408051428152905133917f8fd2cfb62a35fccc1ecef829f83a6c2f840b73dad49d3eaaa402909752086d4b919081900360200190a2565b610a123361090d565b610a4d5760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b60408051428152905133917fa5ee7a2b0254fce91deed604506790ed7fa072d0b14cba4859c3bc8955b9caac919081900360200190a2565b610a8e3361090d565b610ac95760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b604080516020808252835181830152835133937fa6e9673b5d53b3fe3c62b6459720f9c2a1b129d4f69acb771404ba8681b6a9309386939092839283019185019080838360005b83811015610b28578181015183820152602001610b10565b50505050905090810190601f168015610b555780820380516001836020036101000a031916815260200191505b509250505060405180910390a250565b610b6e3361090d565b610ba95760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b60408051428152905133917f1e61af503f1d7de21d5300094c18bf8700f82b2951a4d54dd2adda13f6b3da30919081900360200190a2565b610bea3361090d565b610c255760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b604080518381526020810183905242818301529051849133917f7f7d7327762d01d2c4a552ea0be2bc5a76264574a80aa78083e691a840e509f29181900360600190a350505056fe43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473a265627a7a723158202686681bb101266ec4d10ed5081885cba571d39b4cd057a3f5f32ae64957b57964736f6c63430005110032",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100ea5760003560e01c8063869f94691161008c578063c8fba24311610066578063c8fba24314610336578063ce2c07ce1461033e578063e2c50ad8146103e4578063f760621e146103ec576100ea565b8063869f9469146102d15780639ffb3862146102f4578063a831c8161461032e576100ea565b8063282bfd38116100c8578063282bfd38146102525780633aac3467146102785780636e1ba283146102975780637ed451a4146102b4576100ea565b806318e647dd146100ef57806322a147e61461024257806322e5724c1461024a575b600080fd5b610240600480360360c081101561010557600080fd5b6001600160a01b03823516916020810135916040820135919081019060808101606082013564010000000081111561013c57600080fd5b82018360208201111561014e57600080fd5b8035906020019184600183028401116401000000008311171561017057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929584359590949093506040810192506020013590506401000000008111156101cb57600080fd5b8201836020820111156101dd57600080fd5b803590602001918460018302840111640100000000831117156101ff57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610415945050505050565b005b610240610586565b610240610602565b6102406004803603602081101561026857600080fd5b50356001600160a01b031661067e565b6102406004803603602081101561028e57600080fd5b50351515610705565b610240600480360360208110156102ad57600080fd5b5035610787565b610240600480360360208110156102ca57600080fd5b5035610805565b610240600480360360408110156102e757600080fd5b5080359060200135610883565b61031a6004803603602081101561030a57600080fd5b50356001600160a01b031661090d565b604080519115158252519081900360200190f35b61024061098d565b610240610a09565b6102406004803603602081101561035457600080fd5b81019060208101813564010000000081111561036f57600080fd5b82018360208201111561038157600080fd5b803590602001918460018302840111640100000000831117156103a357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610a85945050505050565b610240610b65565b6102406004803603606081101561040257600080fd5b5080359060208101359060400135610be1565b61041e3361090d565b6104595760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b84866001600160a01b0316336001600160a01b03167f7959c380174061a21a3ba80243a032ba9cd10dc8bd1736d7e835c94e97a35a9887878787604051808581526020018060200184815260200180602001838103835286818151815260200191508051906020019080838360005b838110156104e05781810151838201526020016104c8565b50505050905090810190601f16801561050d5780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015610540578181015183820152602001610528565b50505050905090810190601f16801561056d5780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a4505050505050565b61058f3361090d565b6105ca5760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b60408051428152905133917f6e7b45210b79c12cd1332babd8d86c0bbb9ca898a89ce0404f17064dbfba18c0919081900360200190a2565b61060b3361090d565b6106465760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b60408051428152905133917f07f0eaafadb9abb1d28da85d4b4c74f1939fd61b535c7f5ab501f618f07e76ee919081900360200190a2565b6106873361090d565b6106c25760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b6040805142815290516001600160a01b0383169133917f822b3073be62c5c7f143c2dcd71ee266434ee935d90a1eec3be34710ac8ec1a29181900360200190a350565b61070e3361090d565b6107495760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b604080518215158152426020820152815133927fbef11c059eefba82a15aea8a3a89c86fd08d7711c88fa7daea2632a55488510c928290030190a250565b6107903361090d565b6107cb5760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b604080514281529051829133917f44b7f176bcc739b54bd0800fe491cbdea19df7d4d6b19c281462e6b4fc5043449181900360200190a350565b61080e3361090d565b6108495760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b604080514281529051829133917fe34c70bd3e03956978a5c76d2ea5f3a60819171afea6dee4fc12b2e45f72d43d9181900360200190a350565b61088c3361090d565b6108c75760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b60408051838152602081018390524281830152905133917f8ee737ab16909c4e9d1b750814a4393c9f84ab5d3a29c08c313b783fc846ae33919081900360600190a25050565b6000805460408051634f558e7960e01b81526001600160a01b03858116600483015291519190921691634f558e79916024808301926020929190829003018186803b15801561095b57600080fd5b505afa15801561096f573d6000803e3d6000fd5b505050506040513d602081101561098557600080fd5b505192915050565b6109963361090d565b6109d15760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b60408051428152905133917f8fd2cfb62a35fccc1ecef829f83a6c2f840b73dad49d3eaaa402909752086d4b919081900360200190a2565b610a123361090d565b610a4d5760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b60408051428152905133917fa5ee7a2b0254fce91deed604506790ed7fa072d0b14cba4859c3bc8955b9caac919081900360200190a2565b610a8e3361090d565b610ac95760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b604080516020808252835181830152835133937fa6e9673b5d53b3fe3c62b6459720f9c2a1b129d4f69acb771404ba8681b6a9309386939092839283019185019080838360005b83811015610b28578181015183820152602001610b10565b50505050905090810190601f168015610b555780820380516001836020036101000a031916815260200191505b509250505060405180910390a250565b610b6e3361090d565b610ba95760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b60408051428152905133917f1e61af503f1d7de21d5300094c18bf8700f82b2951a4d54dd2adda13f6b3da30919081900360200190a2565b610bea3361090d565b610c255760405162461bcd60e51b8152600401808060200182810382526024815260200180610c6e6024913960400191505060405180910390fd5b604080518381526020810183905242818301529051849133917f7f7d7327762d01d2c4a552ea0be2bc5a76264574a80aa78083e691a840e509f29181900360600190a350505056fe43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473a265627a7a723158202686681bb101266ec4d10ed5081885cba571d39b4cd057a3f5f32ae64957b57964736f6c63430005110032",
  "sourceMap": "385:11189:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:11189:0;;;;;;;",
  "deployedSourceMap": "385:11189:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;385:11189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:637;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;5052:637:0;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;5052:637:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5052:637:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5052:637:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5052:637:0;;;;;;;;;-1:-1:-1;5052:637:0;;;;-1:-1:-1;5052:637:0;;;;-1:-1:-1;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;5052:637:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5052:637:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5052:637:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5052:637:0;;-1:-1:-1;5052:637:0;;-1:-1:-1;;;;;5052:637:0:i;:::-;;8585:221;;;:::i;10136:229::-;;;:::i;4177:241::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4177:241:0;-1:-1:-1;;;;;4177:241:0;;:::i;9026:254::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9026:254:0;;;;:::i;9414:229::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9414:229:0;;:::i;8219:225::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;8219:225:0;;:::i;6489:407::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6489:407:0;;;;;;;:::i;11440:132::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11440:132:0;-1:-1:-1;;;;;11440:132:0;;:::i;:::-;;;;;;;;;;;;;;;;;;7034:215;;;:::i;9779:213::-;;;:::i;7396:322::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7396:322:0;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;7396:322:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7396:322:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7396:322:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;7396:322:0;;-1:-1:-1;7396:322:0;;-1:-1:-1;;;;;7396:322:0:i;7861:225::-;;;:::i;5971:375::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5971:375:0;;;;;;;;;;;;:::i;5052:637::-;5373:25;5387:10;5373:13;:25::i;:::-;5352:108;;;;-1:-1:-1;;;5352:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5556:7;5532:10;-1:-1:-1;;;;;5475:207:0;5508:10;-1:-1:-1;;;;;5475:207:0;;5577:10;5601:21;5636:13;5663:9;5475:207;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5475:207:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5475:207:0;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;5475:207:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5052:637;;;;;;:::o;8585:221::-;8654:25;8668:10;8654:13;:25::i;:::-;8633:108;;;;-1:-1:-1;;;8633:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8756:43;;;8783:15;8756:43;;;;8771:10;;8756:43;;;;;;;;;;8585:221::o;10136:229::-;10209:25;10223:10;10209:13;:25::i;:::-;10188:108;;;;-1:-1:-1;;;10188:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10311:47;;;10342:15;10311:47;;;;10330:10;;10311:47;;;;;;;;;;10136:229::o;4177:241::-;4259:25;4273:10;4259:13;:25::i;:::-;4238:108;;;;-1:-1:-1;;;4238:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4361:50;;;4395:15;4361:50;;;;-1:-1:-1;;;;;4361:50:0;;;4369:10;;4361:50;;;;;;;;;4177:241;:::o;9026:254::-;9113:25;9127:10;9113:13;:25::i;:::-;9092:108;;;;-1:-1:-1;;;9092:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9215:58;;;;;;;;9257:15;9215:58;;;;;;9234:10;;9215:58;;;;;;;;9026:254;:::o;9414:229::-;9490:25;9504:10;9490:13;:25::i;:::-;9469:108;;;;-1:-1:-1;;;9469:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9592:44;;;9620:15;9592:44;;;;9613:5;;9601:10;;9592:44;;;;;;;;;9414:229;:::o;8219:225::-;8293:25;8307:10;8293:13;:25::i;:::-;8272:108;;;;-1:-1:-1;;;8272:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8395:42;;;8421:15;8395:42;;;;8414:5;;8402:10;;8395:42;;;;;;;;;8219:225;:::o;6489:407::-;6640:25;6654:10;6640:13;:25::i;:::-;6619:108;;;;-1:-1:-1;;;6619:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6742:147;;;;;;;;;;;;6864:15;6742:147;;;;;;6772:10;;6742:147;;;;;;;;;;6489:407;;:::o;11440:132::-;11501:4;11524:16;;:41;;;-1:-1:-1;;;11524:41:0;;-1:-1:-1;;;;;11548:16:0;;;11524:41;;;;;;:16;;;;;:23;;:41;;;;;;;;;;;;;;:16;:41;;;5:2:-1;;;;30:1;27;20:12;5:2;11524:41:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11524:41:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11524:41:0;;11440:132;-1:-1:-1;;11440:132:0:o;7034:215::-;7100:25;7114:10;7100:13;:25::i;:::-;7079:108;;;;-1:-1:-1;;;7079:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7202:40;;;7226:15;7202:40;;;;7214:10;;7202:40;;;;;;;;;;7034:215::o;9779:213::-;9844:25;9858:10;9844:13;:25::i;:::-;9823:108;;;;-1:-1:-1;;;9823:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9946:39;;;9969:15;9946:39;;;;9957:10;;9946:39;;;;;;;;;;9779:213::o;7396:322::-;7557:25;7571:10;7557:13;:25::i;:::-;7536:108;;;;-1:-1:-1;;;7536:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7659:52;;;;;;;;;;;;;;;7680:10;;7659:52;;7692:18;;7659:52;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7659:52:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7396:322;:::o;7861:225::-;7932:25;7946:10;7932:13;:25::i;:::-;7911:108;;;;-1:-1:-1;;;7911:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8034:45;;;8063:15;8034:45;;;;8051:10;;8034:45;;;;;;;;;;7861:225::o;5971:375::-;6099:25;6113:10;6099:13;:25::i;:::-;6078:108;;;;-1:-1:-1;;;6078:108:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6201:138;;;;;;;;;;;;6314:15;6201:138;;;;;;6261:7;;6237:10;;6201:138;;;;;;;;;5971:375;;;:::o",
  "source": "pragma solidity 0.5.17;\n\nimport {TBTCDepositToken} from \"./system/TBTCDepositToken.sol\";\n\n\n// solium-disable function-order\n// Below, a few functions must be public to allow bytes memory parameters, but\n// their being so triggers errors because public functions should be grouped\n// below external functions. Since these would be external if it were possible,\n// we ignore the issue.\n\ncontract DepositLog {\n    /*\n    Logging philosophy:\n      Every state transition should fire a log\n      That log should have ALL necessary info for off-chain actors\n      Everyone should be able to ENTIRELY rely on log messages\n    */\n\n    // `TBTCDepositToken` mints a token for every new Deposit.\n    // If a token exists for a given ID, we know it is a valid Deposit address.\n    TBTCDepositToken tbtcDepositToken;\n\n    // This event is fired when we init the deposit\n    event Created(\n        address indexed _depositContractAddress,\n        address indexed _keepAddress,\n        uint256 _timestamp\n    );\n\n    // This log event contains all info needed to rebuild the redemption tx\n    // We index on request and signers and digest\n    event RedemptionRequested(\n        address indexed _depositContractAddress,\n        address indexed _requester,\n        bytes32 indexed _digest,\n        uint256 _utxoValue,\n        bytes _redeemerOutputScript,\n        uint256 _requestedFee,\n        bytes _outpoint\n    );\n\n    // This log event contains all info needed to build a witnes\n    // We index the digest so that we can search events for the other log\n    event GotRedemptionSignature(\n        address indexed _depositContractAddress,\n        bytes32 indexed _digest,\n        bytes32 _r,\n        bytes32 _s,\n        uint256 _timestamp\n    );\n\n    // This log is fired when the signing group returns a public key\n    event RegisteredPubkey(\n        address indexed _depositContractAddress,\n        bytes32 _signingGroupPubkeyX,\n        bytes32 _signingGroupPubkeyY,\n        uint256 _timestamp\n    );\n\n    // This event is fired when we enter the FAILED_SETUP state for any reason\n    event SetupFailed(\n        address indexed _depositContractAddress,\n        uint256 _timestamp\n    );\n\n    // This event is fired when a funder requests funder abort after\n    // FAILED_SETUP has been reached. Funder abort is a voluntary signer action\n    // to return UTXO(s) that were sent to a signer-controlled wallet despite\n    // the funding proofs having failed.\n    event FunderAbortRequested(\n        address indexed _depositContractAddress,\n        bytes _abortOutputScript\n    );\n\n    // This event is fired when we detect an ECDSA fraud before seeing a funding proof\n    event FraudDuringSetup(\n        address indexed _depositContractAddress,\n        uint256 _timestamp\n    );\n\n    // This event is fired when we enter the ACTIVE state\n    event Funded(\n        address indexed _depositContractAddress,\n        bytes32 indexed _txid,\n        uint256 _timestamp\n    );\n\n    // This event is called when we enter the COURTESY_CALL state\n    event CourtesyCalled(\n        address indexed _depositContractAddress,\n        uint256 _timestamp\n    );\n\n    // This event is fired when we go from COURTESY_CALL to ACTIVE\n    event ExitedCourtesyCall(\n        address indexed _depositContractAddress,\n        uint256 _timestamp\n    );\n\n    // This log event is fired when liquidation\n    event StartedLiquidation(\n        address indexed _depositContractAddress,\n        bool _wasFraud,\n        uint256 _timestamp\n    );\n\n    // This event is fired when the Redemption SPV proof is validated\n    event Redeemed(\n        address indexed _depositContractAddress,\n        bytes32 indexed _txid,\n        uint256 _timestamp\n    );\n\n    // This event is fired when Liquidation is completed\n    event Liquidated(\n        address indexed _depositContractAddress,\n        uint256 _timestamp\n    );\n\n    //\n    // Logging\n    //\n\n    /// @notice               Fires a Created event.\n    /// @dev                  We append the sender, which is the deposit contract that called.\n    /// @param  _keepAddress  The address of the associated keep.\n    /// @return               True if successful, else revert.\n    function logCreated(address _keepAddress) external {\n        require(\n            approvedToLog(msg.sender),\n            \"Caller is not approved to log events\"\n        );\n        emit Created(msg.sender, _keepAddress, block.timestamp);\n    }\n\n    /// @notice                 Fires a RedemptionRequested event.\n    /// @dev                    This is the only event without an explicit timestamp.\n    /// @param  _requester      The ethereum address of the requester.\n    /// @param  _digest         The calculated sighash digest.\n    /// @param  _utxoValue       The size of the utxo in sat.\n    /// @param  _redeemerOutputScript The redeemer's length-prefixed output script.\n    /// @param  _requestedFee   The requester or bump-system specified fee.\n    /// @param  _outpoint       The 36 byte outpoint.\n    /// @return                 True if successful, else revert.\n    function logRedemptionRequested(\n        address _requester,\n        bytes32 _digest,\n        uint256 _utxoValue,\n        bytes memory _redeemerOutputScript,\n        uint256 _requestedFee,\n        bytes memory _outpoint\n    ) public {\n        // not external to allow bytes memory parameters\n        require(\n            approvedToLog(msg.sender),\n            \"Caller is not approved to log events\"\n        );\n        emit RedemptionRequested(\n            msg.sender,\n            _requester,\n            _digest,\n            _utxoValue,\n            _redeemerOutputScript,\n            _requestedFee,\n            _outpoint\n        );\n    }\n\n    /// @notice         Fires a GotRedemptionSignature event.\n    /// @dev            We append the sender, which is the deposit contract that called.\n    /// @param  _digest signed digest.\n    /// @param  _r      signature r value.\n    /// @param  _s      signature s value.\n    function logGotRedemptionSignature(bytes32 _digest, bytes32 _r, bytes32 _s)\n        external\n    {\n        require(\n            approvedToLog(msg.sender),\n            \"Caller is not approved to log events\"\n        );\n        emit GotRedemptionSignature(\n            msg.sender,\n            _digest,\n            _r,\n            _s,\n            block.timestamp\n        );\n    }\n\n    /// @notice     Fires a RegisteredPubkey event.\n    /// @dev        We append the sender, which is the deposit contract that called.\n    function logRegisteredPubkey(\n        bytes32 _signingGroupPubkeyX,\n        bytes32 _signingGroupPubkeyY\n    ) external {\n        require(\n            approvedToLog(msg.sender),\n            \"Caller is not approved to log events\"\n        );\n        emit RegisteredPubkey(\n            msg.sender,\n            _signingGroupPubkeyX,\n            _signingGroupPubkeyY,\n            block.timestamp\n        );\n    }\n\n    /// @notice     Fires a SetupFailed event.\n    /// @dev        We append the sender, which is the deposit contract that called.\n    function logSetupFailed() external {\n        require(\n            approvedToLog(msg.sender),\n            \"Caller is not approved to log events\"\n        );\n        emit SetupFailed(msg.sender, block.timestamp);\n    }\n\n    /// @notice     Fires a FunderAbortRequested event.\n    /// @dev        We append the sender, which is the deposit contract that called.\n    function logFunderRequestedAbort(bytes memory _abortOutputScript) public {\n        // not external to allow bytes memory parameters\n        require(\n            approvedToLog(msg.sender),\n            \"Caller is not approved to log events\"\n        );\n        emit FunderAbortRequested(msg.sender, _abortOutputScript);\n    }\n\n    /// @notice     Fires a FraudDuringSetup event.\n    /// @dev        We append the sender, which is the deposit contract that called.\n    function logFraudDuringSetup() external {\n        require(\n            approvedToLog(msg.sender),\n            \"Caller is not approved to log events\"\n        );\n        emit FraudDuringSetup(msg.sender, block.timestamp);\n    }\n\n    /// @notice     Fires a Funded event.\n    /// @dev        We append the sender, which is the deposit contract that called.\n    function logFunded(bytes32 _txid) external {\n        require(\n            approvedToLog(msg.sender),\n            \"Caller is not approved to log events\"\n        );\n        emit Funded(msg.sender, _txid, block.timestamp);\n    }\n\n    /// @notice     Fires a CourtesyCalled event.\n    /// @dev        We append the sender, which is the deposit contract that called.\n    function logCourtesyCalled() external {\n        require(\n            approvedToLog(msg.sender),\n            \"Caller is not approved to log events\"\n        );\n        emit CourtesyCalled(msg.sender, block.timestamp);\n    }\n\n    /// @notice             Fires a StartedLiquidation event.\n    /// @dev                We append the sender, which is the deposit contract that called.\n    /// @param _wasFraud    True if liquidating for fraud.\n    function logStartedLiquidation(bool _wasFraud) external {\n        require(\n            approvedToLog(msg.sender),\n            \"Caller is not approved to log events\"\n        );\n        emit StartedLiquidation(msg.sender, _wasFraud, block.timestamp);\n    }\n\n    /// @notice     Fires a Redeemed event\n    /// @dev        We append the sender, which is the deposit contract that called.\n    function logRedeemed(bytes32 _txid) external {\n        require(\n            approvedToLog(msg.sender),\n            \"Caller is not approved to log events\"\n        );\n        emit Redeemed(msg.sender, _txid, block.timestamp);\n    }\n\n    /// @notice     Fires a Liquidated event\n    /// @dev        We append the sender, which is the deposit contract that called.\n    function logLiquidated() external {\n        require(\n            approvedToLog(msg.sender),\n            \"Caller is not approved to log events\"\n        );\n        emit Liquidated(msg.sender, block.timestamp);\n    }\n\n    /// @notice     Fires a ExitedCourtesyCall event\n    /// @dev        We append the sender, which is the deposit contract that called.\n    function logExitedCourtesyCall() external {\n        require(\n            approvedToLog(msg.sender),\n            \"Caller is not approved to log events\"\n        );\n        emit ExitedCourtesyCall(msg.sender, block.timestamp);\n    }\n\n    /// @notice               Sets the tbtcDepositToken contract.\n    /// @dev                  The contract is used by `approvedToLog` to check if the\n    ///                       caller is a Deposit contract. This should only be called once.\n    /// @param  _tbtcDepositTokenAddress  The address of the tbtcDepositToken.\n    function setTbtcDepositToken(TBTCDepositToken _tbtcDepositTokenAddress)\n        internal\n    {\n        require(\n            address(tbtcDepositToken) == address(0),\n            \"tbtcDepositToken is already set\"\n        );\n        tbtcDepositToken = _tbtcDepositTokenAddress;\n    }\n\n    //\n    // AUTH\n    //\n\n    /// @notice             Checks if an address is an allowed logger.\n    /// @dev                checks tbtcDepositToken to see if the caller represents\n    ///                     an existing deposit.\n    ///                     We don't require this, so deposits are not bricked if the system borks.\n    /// @param  _caller     The address of the calling contract.\n    /// @return             True if approved, otherwise false.\n    function approvedToLog(address _caller) public view returns (bool) {\n        return tbtcDepositToken.exists(uint256(_caller));\n    }\n}\n",
  "sourcePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/DepositLog.sol",
  "ast": {
    "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/DepositLog.sol",
    "exportedSymbols": {
      "DepositLog": [
        439
      ]
    },
    "id": 440,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 1,
        "literals": [
          "solidity",
          "0.5",
          ".17"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:0"
      },
      {
        "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCDepositToken.sol",
        "file": "./system/TBTCDepositToken.sol",
        "id": 3,
        "nodeType": "ImportDirective",
        "scope": 440,
        "sourceUnit": 6845,
        "src": "25:63:0",
        "symbolAliases": [
          {
            "foreign": 2,
            "local": null
          }
        ],
        "unitAlias": ""
      },
      {
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 439,
        "linearizedBaseContracts": [
          439
        ],
        "name": "DepositLog",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 5,
            "name": "tbtcDepositToken",
            "nodeType": "VariableDeclaration",
            "scope": 439,
            "src": "770:33:0",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
              "typeString": "contract TBTCDepositToken"
            },
            "typeName": {
              "contractScope": null,
              "id": 4,
              "name": "TBTCDepositToken",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 6844,
              "src": "770:16:0",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                "typeString": "contract TBTCDepositToken"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 13,
            "name": "Created",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 12,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7,
                  "indexed": true,
                  "name": "_depositContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 13,
                  "src": "885:39:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "885:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 9,
                  "indexed": true,
                  "name": "_keepAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 13,
                  "src": "934:28:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 8,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "934:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11,
                  "indexed": false,
                  "name": "_timestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 13,
                  "src": "972:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 10,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "972:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "875:121:0"
            },
            "src": "862:135:0"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 29,
            "name": "RedemptionRequested",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 28,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 15,
                  "indexed": true,
                  "name": "_depositContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 29,
                  "src": "1164:39:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1164:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 17,
                  "indexed": true,
                  "name": "_requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 29,
                  "src": "1213:26:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 16,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1213:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 19,
                  "indexed": true,
                  "name": "_digest",
                  "nodeType": "VariableDeclaration",
                  "scope": 29,
                  "src": "1249:23:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 18,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1249:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 21,
                  "indexed": false,
                  "name": "_utxoValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 29,
                  "src": "1282:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 20,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1282:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23,
                  "indexed": false,
                  "name": "_redeemerOutputScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 29,
                  "src": "1310:27:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 22,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1310:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 25,
                  "indexed": false,
                  "name": "_requestedFee",
                  "nodeType": "VariableDeclaration",
                  "scope": 29,
                  "src": "1347:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 24,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1347:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 27,
                  "indexed": false,
                  "name": "_outpoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 29,
                  "src": "1378:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 26,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1378:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1154:245:0"
            },
            "src": "1129:271:0"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 41,
            "name": "GotRedemptionSignature",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 40,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 31,
                  "indexed": true,
                  "name": "_depositContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 41,
                  "src": "1583:39:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 30,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1583:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 33,
                  "indexed": true,
                  "name": "_digest",
                  "nodeType": "VariableDeclaration",
                  "scope": 41,
                  "src": "1632:23:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 32,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1632:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 35,
                  "indexed": false,
                  "name": "_r",
                  "nodeType": "VariableDeclaration",
                  "scope": 41,
                  "src": "1665:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 34,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1665:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 37,
                  "indexed": false,
                  "name": "_s",
                  "nodeType": "VariableDeclaration",
                  "scope": 41,
                  "src": "1685:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 36,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1685:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 39,
                  "indexed": false,
                  "name": "_timestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 41,
                  "src": "1705:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 38,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1705:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1573:156:0"
            },
            "src": "1545:185:0"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 51,
            "name": "RegisteredPubkey",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 50,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 43,
                  "indexed": true,
                  "name": "_depositContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 51,
                  "src": "1837:39:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 42,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1837:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 45,
                  "indexed": false,
                  "name": "_signingGroupPubkeyX",
                  "nodeType": "VariableDeclaration",
                  "scope": 51,
                  "src": "1886:28:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 44,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1886:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 47,
                  "indexed": false,
                  "name": "_signingGroupPubkeyY",
                  "nodeType": "VariableDeclaration",
                  "scope": 51,
                  "src": "1924:28:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 46,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1924:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 49,
                  "indexed": false,
                  "name": "_timestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 51,
                  "src": "1962:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 48,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1962:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1827:159:0"
            },
            "src": "1805:182:0"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 57,
            "name": "SetupFailed",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 56,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 53,
                  "indexed": true,
                  "name": "_depositContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 57,
                  "src": "2099:39:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 52,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2099:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 55,
                  "indexed": false,
                  "name": "_timestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 57,
                  "src": "2148:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 54,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2148:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2089:83:0"
            },
            "src": "2072:101:0"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 63,
            "name": "FunderAbortRequested",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 62,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 59,
                  "indexed": true,
                  "name": "_depositContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 63,
                  "src": "2483:39:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 58,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2483:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 61,
                  "indexed": false,
                  "name": "_abortOutputScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 63,
                  "src": "2532:24:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 60,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2532:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2473:89:0"
            },
            "src": "2447:116:0"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 69,
            "name": "FraudDuringSetup",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 68,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 65,
                  "indexed": true,
                  "name": "_depositContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 69,
                  "src": "2688:39:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 64,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2688:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 67,
                  "indexed": false,
                  "name": "_timestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 69,
                  "src": "2737:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 66,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2737:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2678:83:0"
            },
            "src": "2656:106:0"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 77,
            "name": "Funded",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 76,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 71,
                  "indexed": true,
                  "name": "_depositContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 77,
                  "src": "2848:39:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 70,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2848:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 73,
                  "indexed": true,
                  "name": "_txid",
                  "nodeType": "VariableDeclaration",
                  "scope": 77,
                  "src": "2897:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 72,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2897:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 75,
                  "indexed": false,
                  "name": "_timestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 77,
                  "src": "2928:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 74,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2928:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2838:114:0"
            },
            "src": "2826:127:0"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 83,
            "name": "CourtesyCalled",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 82,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 79,
                  "indexed": true,
                  "name": "_depositContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 83,
                  "src": "3055:39:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 78,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3055:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 81,
                  "indexed": false,
                  "name": "_timestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 83,
                  "src": "3104:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 80,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3104:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3045:83:0"
            },
            "src": "3025:104:0"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 89,
            "name": "ExitedCourtesyCall",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 88,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 85,
                  "indexed": true,
                  "name": "_depositContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 89,
                  "src": "3236:39:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 84,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3236:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 87,
                  "indexed": false,
                  "name": "_timestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 89,
                  "src": "3285:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 86,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3285:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3226:83:0"
            },
            "src": "3202:108:0"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 97,
            "name": "StartedLiquidation",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 96,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 91,
                  "indexed": true,
                  "name": "_depositContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 97,
                  "src": "3398:39:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 90,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3398:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 93,
                  "indexed": false,
                  "name": "_wasFraud",
                  "nodeType": "VariableDeclaration",
                  "scope": 97,
                  "src": "3447:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 92,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3447:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 95,
                  "indexed": false,
                  "name": "_timestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 97,
                  "src": "3471:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 94,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3471:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3388:107:0"
            },
            "src": "3364:132:0"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 105,
            "name": "Redeemed",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 104,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 99,
                  "indexed": true,
                  "name": "_depositContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 105,
                  "src": "3596:39:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 98,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3596:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 101,
                  "indexed": true,
                  "name": "_txid",
                  "nodeType": "VariableDeclaration",
                  "scope": 105,
                  "src": "3645:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 100,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3645:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 103,
                  "indexed": false,
                  "name": "_timestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 105,
                  "src": "3676:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 102,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3676:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3586:114:0"
            },
            "src": "3572:129:0"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 111,
            "name": "Liquidated",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 110,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 107,
                  "indexed": true,
                  "name": "_depositContractAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 111,
                  "src": "3790:39:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 106,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3790:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 109,
                  "indexed": false,
                  "name": "_timestamp",
                  "nodeType": "VariableDeclaration",
                  "scope": 111,
                  "src": "3839:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 108,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3839:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3780:83:0"
            },
            "src": "3764:100:0"
          },
          {
            "body": {
              "id": 132,
              "nodeType": "Block",
              "src": "4228:190:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 118,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18360,
                              "src": "4273:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 119,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4273:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 117,
                          "name": "approvedToLog",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 438,
                          "src": "4259:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4259:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                        "id": 121,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4298:38:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        },
                        "value": "Caller is not approved to log events"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        }
                      ],
                      "id": 116,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "4238:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 122,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4238:108:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 123,
                  "nodeType": "ExpressionStatement",
                  "src": "4238:108:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 125,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "4369:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 126,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4369:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 127,
                        "name": "_keepAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 113,
                        "src": "4381:12:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 128,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18350,
                          "src": "4395:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 129,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4395:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 124,
                      "name": "Created",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 13,
                      "src": "4361:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,address,uint256)"
                      }
                    },
                    "id": 130,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4361:50:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 131,
                  "nodeType": "EmitStatement",
                  "src": "4356:55:0"
                }
              ]
            },
            "documentation": "@notice               Fires a Created event.\n @dev                  We append the sender, which is the deposit contract that called.\n @param  _keepAddress  The address of the associated keep.\n @return               True if successful, else revert.",
            "id": 133,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logCreated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 114,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 113,
                  "name": "_keepAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 133,
                  "src": "4197:20:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 112,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4197:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4196:22:0"
            },
            "returnParameters": {
              "id": 115,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4228:0:0"
            },
            "scope": 439,
            "src": "4177:241:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 167,
              "nodeType": "Block",
              "src": "5285:404:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 150,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18360,
                              "src": "5387:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 151,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5387:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 149,
                          "name": "approvedToLog",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 438,
                          "src": "5373:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 152,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5373:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                        "id": 153,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5412:38:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        },
                        "value": "Caller is not approved to log events"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        }
                      ],
                      "id": 148,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "5352:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 154,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5352:108:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 155,
                  "nodeType": "ExpressionStatement",
                  "src": "5352:108:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 157,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "5508:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5508:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 159,
                        "name": "_requester",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 135,
                        "src": "5532:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 160,
                        "name": "_digest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 137,
                        "src": "5556:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 161,
                        "name": "_utxoValue",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 139,
                        "src": "5577:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 162,
                        "name": "_redeemerOutputScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 141,
                        "src": "5601:21:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 163,
                        "name": "_requestedFee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 143,
                        "src": "5636:13:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 164,
                        "name": "_outpoint",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 145,
                        "src": "5663:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 156,
                      "name": "RedemptionRequested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 29,
                      "src": "5475:19:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_bytes32_$_t_uint256_$_t_bytes_memory_ptr_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,address,bytes32,uint256,bytes memory,uint256,bytes memory)"
                      }
                    },
                    "id": 165,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5475:207:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 166,
                  "nodeType": "EmitStatement",
                  "src": "5470:212:0"
                }
              ]
            },
            "documentation": "@notice                 Fires a RedemptionRequested event.\n @dev                    This is the only event without an explicit timestamp.\n @param  _requester      The ethereum address of the requester.\n @param  _digest         The calculated sighash digest.\n @param  _utxoValue       The size of the utxo in sat.\n @param  _redeemerOutputScript The redeemer's length-prefixed output script.\n @param  _requestedFee   The requester or bump-system specified fee.\n @param  _outpoint       The 36 byte outpoint.\n @return                 True if successful, else revert.",
            "id": 168,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logRedemptionRequested",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 146,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 135,
                  "name": "_requester",
                  "nodeType": "VariableDeclaration",
                  "scope": 168,
                  "src": "5093:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 134,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5093:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 137,
                  "name": "_digest",
                  "nodeType": "VariableDeclaration",
                  "scope": 168,
                  "src": "5121:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 136,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5121:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 139,
                  "name": "_utxoValue",
                  "nodeType": "VariableDeclaration",
                  "scope": 168,
                  "src": "5146:18:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 138,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5146:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 141,
                  "name": "_redeemerOutputScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 168,
                  "src": "5174:34:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 140,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5174:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 143,
                  "name": "_requestedFee",
                  "nodeType": "VariableDeclaration",
                  "scope": 168,
                  "src": "5218:21:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 142,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5218:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 145,
                  "name": "_outpoint",
                  "nodeType": "VariableDeclaration",
                  "scope": 168,
                  "src": "5249:22:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 144,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "5249:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5083:194:0"
            },
            "returnParameters": {
              "id": 147,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5285:0:0"
            },
            "scope": 439,
            "src": "5052:637:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 195,
              "nodeType": "Block",
              "src": "6068:278:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 179,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18360,
                              "src": "6113:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 180,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6113:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 178,
                          "name": "approvedToLog",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 438,
                          "src": "6099:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 181,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6099:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                        "id": 182,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6138:38:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        },
                        "value": "Caller is not approved to log events"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        }
                      ],
                      "id": 177,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "6078:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6078:108:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 184,
                  "nodeType": "ExpressionStatement",
                  "src": "6078:108:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 186,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "6237:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6237:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 188,
                        "name": "_digest",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 170,
                        "src": "6261:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 189,
                        "name": "_r",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 172,
                        "src": "6282:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 190,
                        "name": "_s",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 174,
                        "src": "6298:2:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 191,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18350,
                          "src": "6314:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 192,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6314:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 185,
                      "name": "GotRedemptionSignature",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 41,
                      "src": "6201:22:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,bytes32,bytes32,uint256)"
                      }
                    },
                    "id": 193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6201:138:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 194,
                  "nodeType": "EmitStatement",
                  "src": "6196:143:0"
                }
              ]
            },
            "documentation": "@notice         Fires a GotRedemptionSignature event.\n @dev            We append the sender, which is the deposit contract that called.\n @param  _digest signed digest.\n @param  _r      signature r value.\n @param  _s      signature s value.",
            "id": 196,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logGotRedemptionSignature",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 175,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 170,
                  "name": "_digest",
                  "nodeType": "VariableDeclaration",
                  "scope": 196,
                  "src": "6006:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 169,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6006:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 172,
                  "name": "_r",
                  "nodeType": "VariableDeclaration",
                  "scope": 196,
                  "src": "6023:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 171,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6023:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 174,
                  "name": "_s",
                  "nodeType": "VariableDeclaration",
                  "scope": 196,
                  "src": "6035:10:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 173,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6035:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6005:41:0"
            },
            "returnParameters": {
              "id": 176,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6068:0:0"
            },
            "scope": 439,
            "src": "5971:375:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 220,
              "nodeType": "Block",
              "src": "6609:287:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 205,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18360,
                              "src": "6654:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6654:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 204,
                          "name": "approvedToLog",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 438,
                          "src": "6640:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 207,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6640:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                        "id": 208,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6679:38:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        },
                        "value": "Caller is not approved to log events"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        }
                      ],
                      "id": 203,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "6619:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 209,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6619:108:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 210,
                  "nodeType": "ExpressionStatement",
                  "src": "6619:108:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 212,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "6772:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 213,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6772:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 214,
                        "name": "_signingGroupPubkeyX",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 198,
                        "src": "6796:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 215,
                        "name": "_signingGroupPubkeyY",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 200,
                        "src": "6830:20:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 216,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18350,
                          "src": "6864:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 217,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6864:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 211,
                      "name": "RegisteredPubkey",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 51,
                      "src": "6742:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,bytes32,uint256)"
                      }
                    },
                    "id": 218,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6742:147:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 219,
                  "nodeType": "EmitStatement",
                  "src": "6737:152:0"
                }
              ]
            },
            "documentation": "@notice     Fires a RegisteredPubkey event.\n @dev        We append the sender, which is the deposit contract that called.",
            "id": 221,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logRegisteredPubkey",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 201,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 198,
                  "name": "_signingGroupPubkeyX",
                  "nodeType": "VariableDeclaration",
                  "scope": 221,
                  "src": "6527:28:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 197,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6527:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 200,
                  "name": "_signingGroupPubkeyY",
                  "nodeType": "VariableDeclaration",
                  "scope": 221,
                  "src": "6565:28:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 199,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6565:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6517:82:0"
            },
            "returnParameters": {
              "id": 202,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6609:0:0"
            },
            "scope": 439,
            "src": "6489:407:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 239,
              "nodeType": "Block",
              "src": "7069:180:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 226,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18360,
                              "src": "7114:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7114:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 225,
                          "name": "approvedToLog",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 438,
                          "src": "7100:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7100:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                        "id": 229,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7139:38:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        },
                        "value": "Caller is not approved to log events"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        }
                      ],
                      "id": 224,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "7079:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 230,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7079:108:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 231,
                  "nodeType": "ExpressionStatement",
                  "src": "7079:108:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 233,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "7214:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7214:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 235,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18350,
                          "src": "7226:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 236,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7226:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 232,
                      "name": "SetupFailed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 57,
                      "src": "7202:11:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 237,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7202:40:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 238,
                  "nodeType": "EmitStatement",
                  "src": "7197:45:0"
                }
              ]
            },
            "documentation": "@notice     Fires a SetupFailed event.\n @dev        We append the sender, which is the deposit contract that called.",
            "id": 240,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logSetupFailed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 222,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7057:2:0"
            },
            "returnParameters": {
              "id": 223,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7069:0:0"
            },
            "scope": 439,
            "src": "7034:215:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 259,
              "nodeType": "Block",
              "src": "7469:249:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 247,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18360,
                              "src": "7571:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 248,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7571:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 246,
                          "name": "approvedToLog",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 438,
                          "src": "7557:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7557:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                        "id": 250,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7596:38:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        },
                        "value": "Caller is not approved to log events"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        }
                      ],
                      "id": 245,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "7536:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 251,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7536:108:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 252,
                  "nodeType": "ExpressionStatement",
                  "src": "7536:108:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 254,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "7680:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7680:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 256,
                        "name": "_abortOutputScript",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 242,
                        "src": "7692:18:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 253,
                      "name": "FunderAbortRequested",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 63,
                      "src": "7659:20:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (address,bytes memory)"
                      }
                    },
                    "id": 257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7659:52:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 258,
                  "nodeType": "EmitStatement",
                  "src": "7654:57:0"
                }
              ]
            },
            "documentation": "@notice     Fires a FunderAbortRequested event.\n @dev        We append the sender, which is the deposit contract that called.",
            "id": 260,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logFunderRequestedAbort",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 243,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 242,
                  "name": "_abortOutputScript",
                  "nodeType": "VariableDeclaration",
                  "scope": 260,
                  "src": "7429:31:0",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 241,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "7429:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7428:33:0"
            },
            "returnParameters": {
              "id": 244,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7469:0:0"
            },
            "scope": 439,
            "src": "7396:322:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 278,
              "nodeType": "Block",
              "src": "7901:185:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 265,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18360,
                              "src": "7946:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 266,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7946:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 264,
                          "name": "approvedToLog",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 438,
                          "src": "7932:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 267,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7932:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                        "id": 268,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7971:38:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        },
                        "value": "Caller is not approved to log events"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        }
                      ],
                      "id": 263,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "7911:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 269,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7911:108:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 270,
                  "nodeType": "ExpressionStatement",
                  "src": "7911:108:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 272,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "8051:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 273,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8051:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 274,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18350,
                          "src": "8063:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 275,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8063:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 271,
                      "name": "FraudDuringSetup",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 69,
                      "src": "8034:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 276,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8034:45:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 277,
                  "nodeType": "EmitStatement",
                  "src": "8029:50:0"
                }
              ]
            },
            "documentation": "@notice     Fires a FraudDuringSetup event.\n @dev        We append the sender, which is the deposit contract that called.",
            "id": 279,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logFraudDuringSetup",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 261,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7889:2:0"
            },
            "returnParameters": {
              "id": 262,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7901:0:0"
            },
            "scope": 439,
            "src": "7861:225:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 300,
              "nodeType": "Block",
              "src": "8262:182:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 286,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18360,
                              "src": "8307:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8307:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 285,
                          "name": "approvedToLog",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 438,
                          "src": "8293:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 288,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8293:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                        "id": 289,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8332:38:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        },
                        "value": "Caller is not approved to log events"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        }
                      ],
                      "id": 284,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "8272:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 290,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8272:108:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 291,
                  "nodeType": "ExpressionStatement",
                  "src": "8272:108:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 293,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "8402:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 294,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8402:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 295,
                        "name": "_txid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 281,
                        "src": "8414:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 296,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18350,
                          "src": "8421:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8421:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 292,
                      "name": "Funded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 77,
                      "src": "8395:6:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,uint256)"
                      }
                    },
                    "id": 298,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8395:42:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 299,
                  "nodeType": "EmitStatement",
                  "src": "8390:47:0"
                }
              ]
            },
            "documentation": "@notice     Fires a Funded event.\n @dev        We append the sender, which is the deposit contract that called.",
            "id": 301,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logFunded",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 281,
                  "name": "_txid",
                  "nodeType": "VariableDeclaration",
                  "scope": 301,
                  "src": "8238:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 280,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8238:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8237:15:0"
            },
            "returnParameters": {
              "id": 283,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8262:0:0"
            },
            "scope": 439,
            "src": "8219:225:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 319,
              "nodeType": "Block",
              "src": "8623:183:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 306,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18360,
                              "src": "8668:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 307,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "8668:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 305,
                          "name": "approvedToLog",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 438,
                          "src": "8654:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 308,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8654:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                        "id": 309,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "8693:38:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        },
                        "value": "Caller is not approved to log events"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        }
                      ],
                      "id": 304,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "8633:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 310,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8633:108:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 311,
                  "nodeType": "ExpressionStatement",
                  "src": "8633:108:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 313,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "8771:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8771:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 315,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18350,
                          "src": "8783:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 316,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "8783:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 312,
                      "name": "CourtesyCalled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 83,
                      "src": "8756:14:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 317,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8756:43:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 318,
                  "nodeType": "EmitStatement",
                  "src": "8751:48:0"
                }
              ]
            },
            "documentation": "@notice     Fires a CourtesyCalled event.\n @dev        We append the sender, which is the deposit contract that called.",
            "id": 320,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logCourtesyCalled",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 302,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8611:2:0"
            },
            "returnParameters": {
              "id": 303,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8623:0:0"
            },
            "scope": 439,
            "src": "8585:221:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 341,
              "nodeType": "Block",
              "src": "9082:198:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 327,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18360,
                              "src": "9127:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 328,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9127:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 326,
                          "name": "approvedToLog",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 438,
                          "src": "9113:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 329,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9113:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                        "id": 330,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9152:38:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        },
                        "value": "Caller is not approved to log events"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        }
                      ],
                      "id": 325,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "9092:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 331,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9092:108:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 332,
                  "nodeType": "ExpressionStatement",
                  "src": "9092:108:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 334,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "9234:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9234:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 336,
                        "name": "_wasFraud",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 322,
                        "src": "9246:9:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 337,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18350,
                          "src": "9257:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 338,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9257:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 333,
                      "name": "StartedLiquidation",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 97,
                      "src": "9215:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bool_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bool,uint256)"
                      }
                    },
                    "id": 339,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9215:58:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 340,
                  "nodeType": "EmitStatement",
                  "src": "9210:63:0"
                }
              ]
            },
            "documentation": "@notice             Fires a StartedLiquidation event.\n @dev                We append the sender, which is the deposit contract that called.\n @param _wasFraud    True if liquidating for fraud.",
            "id": 342,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logStartedLiquidation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 323,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 322,
                  "name": "_wasFraud",
                  "nodeType": "VariableDeclaration",
                  "scope": 342,
                  "src": "9057:14:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 321,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9057:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9056:16:0"
            },
            "returnParameters": {
              "id": 324,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9082:0:0"
            },
            "scope": 439,
            "src": "9026:254:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 363,
              "nodeType": "Block",
              "src": "9459:184:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 349,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18360,
                              "src": "9504:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 350,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9504:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 348,
                          "name": "approvedToLog",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 438,
                          "src": "9490:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 351,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9490:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                        "id": 352,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9529:38:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        },
                        "value": "Caller is not approved to log events"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        }
                      ],
                      "id": 347,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "9469:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 353,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9469:108:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 354,
                  "nodeType": "ExpressionStatement",
                  "src": "9469:108:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 356,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "9601:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 357,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9601:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 358,
                        "name": "_txid",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 344,
                        "src": "9613:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 359,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18350,
                          "src": "9620:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 360,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9620:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 355,
                      "name": "Redeemed",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 105,
                      "src": "9592:8:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$returns$__$",
                        "typeString": "function (address,bytes32,uint256)"
                      }
                    },
                    "id": 361,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9592:44:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 362,
                  "nodeType": "EmitStatement",
                  "src": "9587:49:0"
                }
              ]
            },
            "documentation": "@notice     Fires a Redeemed event\n @dev        We append the sender, which is the deposit contract that called.",
            "id": 364,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logRedeemed",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 345,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 344,
                  "name": "_txid",
                  "nodeType": "VariableDeclaration",
                  "scope": 364,
                  "src": "9435:13:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 343,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9435:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9434:15:0"
            },
            "returnParameters": {
              "id": 346,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9459:0:0"
            },
            "scope": 439,
            "src": "9414:229:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 382,
              "nodeType": "Block",
              "src": "9813:179:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 369,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18360,
                              "src": "9858:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 370,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9858:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 368,
                          "name": "approvedToLog",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 438,
                          "src": "9844:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9844:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                        "id": 372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "9883:38:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        },
                        "value": "Caller is not approved to log events"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        }
                      ],
                      "id": 367,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "9823:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 373,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9823:108:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 374,
                  "nodeType": "ExpressionStatement",
                  "src": "9823:108:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 376,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "9957:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 377,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9957:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 378,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18350,
                          "src": "9969:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "9969:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 375,
                      "name": "Liquidated",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 111,
                      "src": "9946:10:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9946:39:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 381,
                  "nodeType": "EmitStatement",
                  "src": "9941:44:0"
                }
              ]
            },
            "documentation": "@notice     Fires a Liquidated event\n @dev        We append the sender, which is the deposit contract that called.",
            "id": 383,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logLiquidated",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 365,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9801:2:0"
            },
            "returnParameters": {
              "id": 366,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9813:0:0"
            },
            "scope": 439,
            "src": "9779:213:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 401,
              "nodeType": "Block",
              "src": "10178:187:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 388,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 18360,
                              "src": "10223:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 389,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10223:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 387,
                          "name": "approvedToLog",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 438,
                          "src": "10209:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 390,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10209:25:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                        "id": 391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10248:38:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        },
                        "value": "Caller is not approved to log events"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                          "typeString": "literal_string \"Caller is not approved to log events\""
                        }
                      ],
                      "id": 386,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "10188:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 392,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10188:108:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 393,
                  "nodeType": "ExpressionStatement",
                  "src": "10188:108:0"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 395,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18360,
                          "src": "10330:3:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10330:10:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 397,
                          "name": "block",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 18350,
                          "src": "10342:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_block",
                            "typeString": "block"
                          }
                        },
                        "id": 398,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "timestamp",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "10342:15:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 394,
                      "name": "ExitedCourtesyCall",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 89,
                      "src": "10311:18:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256)"
                      }
                    },
                    "id": 399,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10311:47:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 400,
                  "nodeType": "EmitStatement",
                  "src": "10306:52:0"
                }
              ]
            },
            "documentation": "@notice     Fires a ExitedCourtesyCall event\n @dev        We append the sender, which is the deposit contract that called.",
            "id": 402,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "logExitedCourtesyCall",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 384,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10166:2:0"
            },
            "returnParameters": {
              "id": 385,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10178:0:0"
            },
            "scope": 439,
            "src": "10136:229:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 422,
              "nodeType": "Block",
              "src": "10788:187:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 414,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 409,
                              "name": "tbtcDepositToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5,
                              "src": "10827:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                                "typeString": "contract TBTCDepositToken"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                                "typeString": "contract TBTCDepositToken"
                              }
                            ],
                            "id": 408,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10819:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10819:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 412,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10856:1:0",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 411,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10848:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 413,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10848:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "10819:39:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "746274634465706f736974546f6b656e20697320616c726561647920736574",
                        "id": 415,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10872:33:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e0429be2396896f4ac46ab40f9d50e1164503adb8719eaf266ed3036a4baa208",
                          "typeString": "literal_string \"tbtcDepositToken is already set\""
                        },
                        "value": "tbtcDepositToken is already set"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e0429be2396896f4ac46ab40f9d50e1164503adb8719eaf266ed3036a4baa208",
                          "typeString": "literal_string \"tbtcDepositToken is already set\""
                        }
                      ],
                      "id": 407,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        18363,
                        18364
                      ],
                      "referencedDeclaration": 18364,
                      "src": "10798:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 416,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10798:117:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 417,
                  "nodeType": "ExpressionStatement",
                  "src": "10798:117:0"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 420,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 418,
                      "name": "tbtcDepositToken",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 5,
                      "src": "10925:16:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                        "typeString": "contract TBTCDepositToken"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 419,
                      "name": "_tbtcDepositTokenAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 404,
                      "src": "10944:24:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                        "typeString": "contract TBTCDepositToken"
                      }
                    },
                    "src": "10925:43:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                      "typeString": "contract TBTCDepositToken"
                    }
                  },
                  "id": 421,
                  "nodeType": "ExpressionStatement",
                  "src": "10925:43:0"
                }
              ]
            },
            "documentation": "@notice               Sets the tbtcDepositToken contract.\n @dev                  The contract is used by `approvedToLog` to check if the\n                       caller is a Deposit contract. This should only be called once.\n @param  _tbtcDepositTokenAddress  The address of the tbtcDepositToken.",
            "id": 423,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setTbtcDepositToken",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 405,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 404,
                  "name": "_tbtcDepositTokenAddress",
                  "nodeType": "VariableDeclaration",
                  "scope": 423,
                  "src": "10724:41:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                    "typeString": "contract TBTCDepositToken"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 403,
                    "name": "TBTCDepositToken",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6844,
                    "src": "10724:16:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                      "typeString": "contract TBTCDepositToken"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10723:43:0"
            },
            "returnParameters": {
              "id": 406,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10788:0:0"
            },
            "scope": 439,
            "src": "10695:280:0",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 437,
              "nodeType": "Block",
              "src": "11507:65:0",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 433,
                            "name": "_caller",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 425,
                            "src": "11556:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "11548:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint256_$",
                            "typeString": "type(uint256)"
                          },
                          "typeName": "uint256"
                        },
                        "id": 434,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11548:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 430,
                        "name": "tbtcDepositToken",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 5,
                        "src": "11524:16:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                          "typeString": "contract TBTCDepositToken"
                        }
                      },
                      "id": 431,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "exists",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6810,
                      "src": "11524:23:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (uint256) view external returns (bool)"
                      }
                    },
                    "id": 435,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11524:41:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 429,
                  "id": 436,
                  "nodeType": "Return",
                  "src": "11517:48:0"
                }
              ]
            },
            "documentation": "@notice             Checks if an address is an allowed logger.\n @dev                checks tbtcDepositToken to see if the caller represents\n                     an existing deposit.\n                     We don't require this, so deposits are not bricked if the system borks.\n @param  _caller     The address of the calling contract.\n @return             True if approved, otherwise false.",
            "id": 438,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "approvedToLog",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 426,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 425,
                  "name": "_caller",
                  "nodeType": "VariableDeclaration",
                  "scope": 438,
                  "src": "11463:15:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 424,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "11463:7:0",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11462:17:0"
            },
            "returnParameters": {
              "id": 429,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 428,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 438,
                  "src": "11501:4:0",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 427,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "11501:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11500:6:0"
            },
            "scope": 439,
            "src": "11440:132:0",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          }
        ],
        "scope": 440,
        "src": "385:11189:0"
      }
    ],
    "src": "0:11575:0"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/DepositLog.sol",
      "exportedSymbols": {
        "DepositLog": [
          439
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.5",
            ".17"
          ]
        },
        "id": 1,
        "name": "PragmaDirective",
        "src": "0:23:0"
      },
      {
        "attributes": {
          "SourceUnit": 6845,
          "absolutePath": "/home/runner/work/tbtc/tbtc/solidity/contracts/system/TBTCDepositToken.sol",
          "file": "./system/TBTCDepositToken.sol",
          "scope": 440,
          "symbolAliases": [
            {
              "foreign": 2,
              "local": null
            }
          ],
          "unitAlias": ""
        },
        "id": 3,
        "name": "ImportDirective",
        "src": "25:63:0"
      },
      {
        "attributes": {
          "baseContracts": [
            null
          ],
          "contractDependencies": [
            null
          ],
          "contractKind": "contract",
          "documentation": null,
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            439
          ],
          "name": "DepositLog",
          "scope": 440
        },
        "children": [
          {
            "attributes": {
              "constant": false,
              "name": "tbtcDepositToken",
              "scope": 439,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "contract TBTCDepositToken",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "TBTCDepositToken",
                  "referencedDeclaration": 6844,
                  "type": "contract TBTCDepositToken"
                },
                "id": 4,
                "name": "UserDefinedTypeName",
                "src": "770:16:0"
              }
            ],
            "id": 5,
            "name": "VariableDeclaration",
            "src": "770:33:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "Created"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_depositContractAddress",
                      "scope": 13,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6,
                        "name": "ElementaryTypeName",
                        "src": "885:7:0"
                      }
                    ],
                    "id": 7,
                    "name": "VariableDeclaration",
                    "src": "885:39:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_keepAddress",
                      "scope": 13,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 8,
                        "name": "ElementaryTypeName",
                        "src": "934:7:0"
                      }
                    ],
                    "id": 9,
                    "name": "VariableDeclaration",
                    "src": "934:28:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_timestamp",
                      "scope": 13,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 10,
                        "name": "ElementaryTypeName",
                        "src": "972:7:0"
                      }
                    ],
                    "id": 11,
                    "name": "VariableDeclaration",
                    "src": "972:18:0"
                  }
                ],
                "id": 12,
                "name": "ParameterList",
                "src": "875:121:0"
              }
            ],
            "id": 13,
            "name": "EventDefinition",
            "src": "862:135:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "RedemptionRequested"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_depositContractAddress",
                      "scope": 29,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 14,
                        "name": "ElementaryTypeName",
                        "src": "1164:7:0"
                      }
                    ],
                    "id": 15,
                    "name": "VariableDeclaration",
                    "src": "1164:39:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_requester",
                      "scope": 29,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 16,
                        "name": "ElementaryTypeName",
                        "src": "1213:7:0"
                      }
                    ],
                    "id": 17,
                    "name": "VariableDeclaration",
                    "src": "1213:26:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_digest",
                      "scope": 29,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 18,
                        "name": "ElementaryTypeName",
                        "src": "1249:7:0"
                      }
                    ],
                    "id": 19,
                    "name": "VariableDeclaration",
                    "src": "1249:23:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_utxoValue",
                      "scope": 29,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 20,
                        "name": "ElementaryTypeName",
                        "src": "1282:7:0"
                      }
                    ],
                    "id": 21,
                    "name": "VariableDeclaration",
                    "src": "1282:18:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_redeemerOutputScript",
                      "scope": 29,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 22,
                        "name": "ElementaryTypeName",
                        "src": "1310:5:0"
                      }
                    ],
                    "id": 23,
                    "name": "VariableDeclaration",
                    "src": "1310:27:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_requestedFee",
                      "scope": 29,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 24,
                        "name": "ElementaryTypeName",
                        "src": "1347:7:0"
                      }
                    ],
                    "id": 25,
                    "name": "VariableDeclaration",
                    "src": "1347:21:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_outpoint",
                      "scope": 29,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 26,
                        "name": "ElementaryTypeName",
                        "src": "1378:5:0"
                      }
                    ],
                    "id": 27,
                    "name": "VariableDeclaration",
                    "src": "1378:15:0"
                  }
                ],
                "id": 28,
                "name": "ParameterList",
                "src": "1154:245:0"
              }
            ],
            "id": 29,
            "name": "EventDefinition",
            "src": "1129:271:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "GotRedemptionSignature"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_depositContractAddress",
                      "scope": 41,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 30,
                        "name": "ElementaryTypeName",
                        "src": "1583:7:0"
                      }
                    ],
                    "id": 31,
                    "name": "VariableDeclaration",
                    "src": "1583:39:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_digest",
                      "scope": 41,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 32,
                        "name": "ElementaryTypeName",
                        "src": "1632:7:0"
                      }
                    ],
                    "id": 33,
                    "name": "VariableDeclaration",
                    "src": "1632:23:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_r",
                      "scope": 41,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 34,
                        "name": "ElementaryTypeName",
                        "src": "1665:7:0"
                      }
                    ],
                    "id": 35,
                    "name": "VariableDeclaration",
                    "src": "1665:10:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_s",
                      "scope": 41,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 36,
                        "name": "ElementaryTypeName",
                        "src": "1685:7:0"
                      }
                    ],
                    "id": 37,
                    "name": "VariableDeclaration",
                    "src": "1685:10:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_timestamp",
                      "scope": 41,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 38,
                        "name": "ElementaryTypeName",
                        "src": "1705:7:0"
                      }
                    ],
                    "id": 39,
                    "name": "VariableDeclaration",
                    "src": "1705:18:0"
                  }
                ],
                "id": 40,
                "name": "ParameterList",
                "src": "1573:156:0"
              }
            ],
            "id": 41,
            "name": "EventDefinition",
            "src": "1545:185:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "RegisteredPubkey"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_depositContractAddress",
                      "scope": 51,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 42,
                        "name": "ElementaryTypeName",
                        "src": "1837:7:0"
                      }
                    ],
                    "id": 43,
                    "name": "VariableDeclaration",
                    "src": "1837:39:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_signingGroupPubkeyX",
                      "scope": 51,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 44,
                        "name": "ElementaryTypeName",
                        "src": "1886:7:0"
                      }
                    ],
                    "id": 45,
                    "name": "VariableDeclaration",
                    "src": "1886:28:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_signingGroupPubkeyY",
                      "scope": 51,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 46,
                        "name": "ElementaryTypeName",
                        "src": "1924:7:0"
                      }
                    ],
                    "id": 47,
                    "name": "VariableDeclaration",
                    "src": "1924:28:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_timestamp",
                      "scope": 51,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 48,
                        "name": "ElementaryTypeName",
                        "src": "1962:7:0"
                      }
                    ],
                    "id": 49,
                    "name": "VariableDeclaration",
                    "src": "1962:18:0"
                  }
                ],
                "id": 50,
                "name": "ParameterList",
                "src": "1827:159:0"
              }
            ],
            "id": 51,
            "name": "EventDefinition",
            "src": "1805:182:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "SetupFailed"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_depositContractAddress",
                      "scope": 57,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 52,
                        "name": "ElementaryTypeName",
                        "src": "2099:7:0"
                      }
                    ],
                    "id": 53,
                    "name": "VariableDeclaration",
                    "src": "2099:39:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_timestamp",
                      "scope": 57,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 54,
                        "name": "ElementaryTypeName",
                        "src": "2148:7:0"
                      }
                    ],
                    "id": 55,
                    "name": "VariableDeclaration",
                    "src": "2148:18:0"
                  }
                ],
                "id": 56,
                "name": "ParameterList",
                "src": "2089:83:0"
              }
            ],
            "id": 57,
            "name": "EventDefinition",
            "src": "2072:101:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "FunderAbortRequested"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_depositContractAddress",
                      "scope": 63,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 58,
                        "name": "ElementaryTypeName",
                        "src": "2483:7:0"
                      }
                    ],
                    "id": 59,
                    "name": "VariableDeclaration",
                    "src": "2483:39:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_abortOutputScript",
                      "scope": 63,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 60,
                        "name": "ElementaryTypeName",
                        "src": "2532:5:0"
                      }
                    ],
                    "id": 61,
                    "name": "VariableDeclaration",
                    "src": "2532:24:0"
                  }
                ],
                "id": 62,
                "name": "ParameterList",
                "src": "2473:89:0"
              }
            ],
            "id": 63,
            "name": "EventDefinition",
            "src": "2447:116:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "FraudDuringSetup"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_depositContractAddress",
                      "scope": 69,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 64,
                        "name": "ElementaryTypeName",
                        "src": "2688:7:0"
                      }
                    ],
                    "id": 65,
                    "name": "VariableDeclaration",
                    "src": "2688:39:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_timestamp",
                      "scope": 69,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 66,
                        "name": "ElementaryTypeName",
                        "src": "2737:7:0"
                      }
                    ],
                    "id": 67,
                    "name": "VariableDeclaration",
                    "src": "2737:18:0"
                  }
                ],
                "id": 68,
                "name": "ParameterList",
                "src": "2678:83:0"
              }
            ],
            "id": 69,
            "name": "EventDefinition",
            "src": "2656:106:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "Funded"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_depositContractAddress",
                      "scope": 77,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 70,
                        "name": "ElementaryTypeName",
                        "src": "2848:7:0"
                      }
                    ],
                    "id": 71,
                    "name": "VariableDeclaration",
                    "src": "2848:39:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_txid",
                      "scope": 77,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 72,
                        "name": "ElementaryTypeName",
                        "src": "2897:7:0"
                      }
                    ],
                    "id": 73,
                    "name": "VariableDeclaration",
                    "src": "2897:21:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_timestamp",
                      "scope": 77,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 74,
                        "name": "ElementaryTypeName",
                        "src": "2928:7:0"
                      }
                    ],
                    "id": 75,
                    "name": "VariableDeclaration",
                    "src": "2928:18:0"
                  }
                ],
                "id": 76,
                "name": "ParameterList",
                "src": "2838:114:0"
              }
            ],
            "id": 77,
            "name": "EventDefinition",
            "src": "2826:127:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "CourtesyCalled"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_depositContractAddress",
                      "scope": 83,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 78,
                        "name": "ElementaryTypeName",
                        "src": "3055:7:0"
                      }
                    ],
                    "id": 79,
                    "name": "VariableDeclaration",
                    "src": "3055:39:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_timestamp",
                      "scope": 83,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 80,
                        "name": "ElementaryTypeName",
                        "src": "3104:7:0"
                      }
                    ],
                    "id": 81,
                    "name": "VariableDeclaration",
                    "src": "3104:18:0"
                  }
                ],
                "id": 82,
                "name": "ParameterList",
                "src": "3045:83:0"
              }
            ],
            "id": 83,
            "name": "EventDefinition",
            "src": "3025:104:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "ExitedCourtesyCall"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_depositContractAddress",
                      "scope": 89,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 84,
                        "name": "ElementaryTypeName",
                        "src": "3236:7:0"
                      }
                    ],
                    "id": 85,
                    "name": "VariableDeclaration",
                    "src": "3236:39:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_timestamp",
                      "scope": 89,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 86,
                        "name": "ElementaryTypeName",
                        "src": "3285:7:0"
                      }
                    ],
                    "id": 87,
                    "name": "VariableDeclaration",
                    "src": "3285:18:0"
                  }
                ],
                "id": 88,
                "name": "ParameterList",
                "src": "3226:83:0"
              }
            ],
            "id": 89,
            "name": "EventDefinition",
            "src": "3202:108:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "StartedLiquidation"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_depositContractAddress",
                      "scope": 97,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 90,
                        "name": "ElementaryTypeName",
                        "src": "3398:7:0"
                      }
                    ],
                    "id": 91,
                    "name": "VariableDeclaration",
                    "src": "3398:39:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_wasFraud",
                      "scope": 97,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 92,
                        "name": "ElementaryTypeName",
                        "src": "3447:4:0"
                      }
                    ],
                    "id": 93,
                    "name": "VariableDeclaration",
                    "src": "3447:14:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_timestamp",
                      "scope": 97,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 94,
                        "name": "ElementaryTypeName",
                        "src": "3471:7:0"
                      }
                    ],
                    "id": 95,
                    "name": "VariableDeclaration",
                    "src": "3471:18:0"
                  }
                ],
                "id": 96,
                "name": "ParameterList",
                "src": "3388:107:0"
              }
            ],
            "id": 97,
            "name": "EventDefinition",
            "src": "3364:132:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "Redeemed"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_depositContractAddress",
                      "scope": 105,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 98,
                        "name": "ElementaryTypeName",
                        "src": "3596:7:0"
                      }
                    ],
                    "id": 99,
                    "name": "VariableDeclaration",
                    "src": "3596:39:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_txid",
                      "scope": 105,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 100,
                        "name": "ElementaryTypeName",
                        "src": "3645:7:0"
                      }
                    ],
                    "id": 101,
                    "name": "VariableDeclaration",
                    "src": "3645:21:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_timestamp",
                      "scope": 105,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 102,
                        "name": "ElementaryTypeName",
                        "src": "3676:7:0"
                      }
                    ],
                    "id": 103,
                    "name": "VariableDeclaration",
                    "src": "3676:18:0"
                  }
                ],
                "id": 104,
                "name": "ParameterList",
                "src": "3586:114:0"
              }
            ],
            "id": 105,
            "name": "EventDefinition",
            "src": "3572:129:0"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "Liquidated"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "name": "_depositContractAddress",
                      "scope": 111,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 106,
                        "name": "ElementaryTypeName",
                        "src": "3790:7:0"
                      }
                    ],
                    "id": 107,
                    "name": "VariableDeclaration",
                    "src": "3790:39:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "_timestamp",
                      "scope": 111,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 108,
                        "name": "ElementaryTypeName",
                        "src": "3839:7:0"
                      }
                    ],
                    "id": 109,
                    "name": "VariableDeclaration",
                    "src": "3839:18:0"
                  }
                ],
                "id": 110,
                "name": "ParameterList",
                "src": "3780:83:0"
              }
            ],
            "id": 111,
            "name": "EventDefinition",
            "src": "3764:100:0"
          },
          {
            "attributes": {
              "documentation": "@notice               Fires a Created event.\n @dev                  We append the sender, which is the deposit contract that called.\n @param  _keepAddress  The address of the associated keep.\n @return               True if successful, else revert.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logCreated",
              "scope": 439,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_keepAddress",
                      "scope": 133,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 112,
                        "name": "ElementaryTypeName",
                        "src": "4197:7:0"
                      }
                    ],
                    "id": 113,
                    "name": "VariableDeclaration",
                    "src": "4197:20:0"
                  }
                ],
                "id": 114,
                "name": "ParameterList",
                "src": "4196:22:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 115,
                "name": "ParameterList",
                "src": "4228:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                                  "typeString": "literal_string \"Caller is not approved to log events\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 116,
                            "name": "Identifier",
                            "src": "4238:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 438,
                                  "type": "function (address) view returns (bool)",
                                  "value": "approvedToLog"
                                },
                                "id": 117,
                                "name": "Identifier",
                                "src": "4259:13:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18360,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 118,
                                    "name": "Identifier",
                                    "src": "4273:3:0"
                                  }
                                ],
                                "id": 119,
                                "name": "MemberAccess",
                                "src": "4273:10:0"
                              }
                            ],
                            "id": 120,
                            "name": "FunctionCall",
                            "src": "4259:25:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Caller is not approved to log events\"",
                              "value": "Caller is not approved to log events"
                            },
                            "id": 121,
                            "name": "Literal",
                            "src": "4298:38:0"
                          }
                        ],
                        "id": 122,
                        "name": "FunctionCall",
                        "src": "4238:108:0"
                      }
                    ],
                    "id": 123,
                    "name": "ExpressionStatement",
                    "src": "4238:108:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 13,
                              "type": "function (address,address,uint256)",
                              "value": "Created"
                            },
                            "id": 124,
                            "name": "Identifier",
                            "src": "4361:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 125,
                                "name": "Identifier",
                                "src": "4369:3:0"
                              }
                            ],
                            "id": 126,
                            "name": "MemberAccess",
                            "src": "4369:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 113,
                              "type": "address",
                              "value": "_keepAddress"
                            },
                            "id": 127,
                            "name": "Identifier",
                            "src": "4381:12:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 128,
                                "name": "Identifier",
                                "src": "4395:5:0"
                              }
                            ],
                            "id": 129,
                            "name": "MemberAccess",
                            "src": "4395:15:0"
                          }
                        ],
                        "id": 130,
                        "name": "FunctionCall",
                        "src": "4361:50:0"
                      }
                    ],
                    "id": 131,
                    "name": "EmitStatement",
                    "src": "4356:55:0"
                  }
                ],
                "id": 132,
                "name": "Block",
                "src": "4228:190:0"
              }
            ],
            "id": 133,
            "name": "FunctionDefinition",
            "src": "4177:241:0"
          },
          {
            "attributes": {
              "documentation": "@notice                 Fires a RedemptionRequested event.\n @dev                    This is the only event without an explicit timestamp.\n @param  _requester      The ethereum address of the requester.\n @param  _digest         The calculated sighash digest.\n @param  _utxoValue       The size of the utxo in sat.\n @param  _redeemerOutputScript The redeemer's length-prefixed output script.\n @param  _requestedFee   The requester or bump-system specified fee.\n @param  _outpoint       The 36 byte outpoint.\n @return                 True if successful, else revert.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logRedemptionRequested",
              "scope": 439,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_requester",
                      "scope": 168,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 134,
                        "name": "ElementaryTypeName",
                        "src": "5093:7:0"
                      }
                    ],
                    "id": 135,
                    "name": "VariableDeclaration",
                    "src": "5093:18:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_digest",
                      "scope": 168,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 136,
                        "name": "ElementaryTypeName",
                        "src": "5121:7:0"
                      }
                    ],
                    "id": 137,
                    "name": "VariableDeclaration",
                    "src": "5121:15:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_utxoValue",
                      "scope": 168,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 138,
                        "name": "ElementaryTypeName",
                        "src": "5146:7:0"
                      }
                    ],
                    "id": 139,
                    "name": "VariableDeclaration",
                    "src": "5146:18:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_redeemerOutputScript",
                      "scope": 168,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 140,
                        "name": "ElementaryTypeName",
                        "src": "5174:5:0"
                      }
                    ],
                    "id": 141,
                    "name": "VariableDeclaration",
                    "src": "5174:34:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_requestedFee",
                      "scope": 168,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 142,
                        "name": "ElementaryTypeName",
                        "src": "5218:7:0"
                      }
                    ],
                    "id": 143,
                    "name": "VariableDeclaration",
                    "src": "5218:21:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_outpoint",
                      "scope": 168,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 144,
                        "name": "ElementaryTypeName",
                        "src": "5249:5:0"
                      }
                    ],
                    "id": 145,
                    "name": "VariableDeclaration",
                    "src": "5249:22:0"
                  }
                ],
                "id": 146,
                "name": "ParameterList",
                "src": "5083:194:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 147,
                "name": "ParameterList",
                "src": "5285:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                                  "typeString": "literal_string \"Caller is not approved to log events\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 148,
                            "name": "Identifier",
                            "src": "5352:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 438,
                                  "type": "function (address) view returns (bool)",
                                  "value": "approvedToLog"
                                },
                                "id": 149,
                                "name": "Identifier",
                                "src": "5373:13:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18360,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 150,
                                    "name": "Identifier",
                                    "src": "5387:3:0"
                                  }
                                ],
                                "id": 151,
                                "name": "MemberAccess",
                                "src": "5387:10:0"
                              }
                            ],
                            "id": 152,
                            "name": "FunctionCall",
                            "src": "5373:25:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Caller is not approved to log events\"",
                              "value": "Caller is not approved to log events"
                            },
                            "id": 153,
                            "name": "Literal",
                            "src": "5412:38:0"
                          }
                        ],
                        "id": 154,
                        "name": "FunctionCall",
                        "src": "5352:108:0"
                      }
                    ],
                    "id": 155,
                    "name": "ExpressionStatement",
                    "src": "5352:108:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 29,
                              "type": "function (address,address,bytes32,uint256,bytes memory,uint256,bytes memory)",
                              "value": "RedemptionRequested"
                            },
                            "id": 156,
                            "name": "Identifier",
                            "src": "5475:19:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 157,
                                "name": "Identifier",
                                "src": "5508:3:0"
                              }
                            ],
                            "id": 158,
                            "name": "MemberAccess",
                            "src": "5508:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 135,
                              "type": "address",
                              "value": "_requester"
                            },
                            "id": 159,
                            "name": "Identifier",
                            "src": "5532:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 137,
                              "type": "bytes32",
                              "value": "_digest"
                            },
                            "id": 160,
                            "name": "Identifier",
                            "src": "5556:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 139,
                              "type": "uint256",
                              "value": "_utxoValue"
                            },
                            "id": 161,
                            "name": "Identifier",
                            "src": "5577:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 141,
                              "type": "bytes memory",
                              "value": "_redeemerOutputScript"
                            },
                            "id": 162,
                            "name": "Identifier",
                            "src": "5601:21:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 143,
                              "type": "uint256",
                              "value": "_requestedFee"
                            },
                            "id": 163,
                            "name": "Identifier",
                            "src": "5636:13:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 145,
                              "type": "bytes memory",
                              "value": "_outpoint"
                            },
                            "id": 164,
                            "name": "Identifier",
                            "src": "5663:9:0"
                          }
                        ],
                        "id": 165,
                        "name": "FunctionCall",
                        "src": "5475:207:0"
                      }
                    ],
                    "id": 166,
                    "name": "EmitStatement",
                    "src": "5470:212:0"
                  }
                ],
                "id": 167,
                "name": "Block",
                "src": "5285:404:0"
              }
            ],
            "id": 168,
            "name": "FunctionDefinition",
            "src": "5052:637:0"
          },
          {
            "attributes": {
              "documentation": "@notice         Fires a GotRedemptionSignature event.\n @dev            We append the sender, which is the deposit contract that called.\n @param  _digest signed digest.\n @param  _r      signature r value.\n @param  _s      signature s value.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logGotRedemptionSignature",
              "scope": 439,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_digest",
                      "scope": 196,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 169,
                        "name": "ElementaryTypeName",
                        "src": "6006:7:0"
                      }
                    ],
                    "id": 170,
                    "name": "VariableDeclaration",
                    "src": "6006:15:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_r",
                      "scope": 196,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 171,
                        "name": "ElementaryTypeName",
                        "src": "6023:7:0"
                      }
                    ],
                    "id": 172,
                    "name": "VariableDeclaration",
                    "src": "6023:10:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_s",
                      "scope": 196,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 173,
                        "name": "ElementaryTypeName",
                        "src": "6035:7:0"
                      }
                    ],
                    "id": 174,
                    "name": "VariableDeclaration",
                    "src": "6035:10:0"
                  }
                ],
                "id": 175,
                "name": "ParameterList",
                "src": "6005:41:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 176,
                "name": "ParameterList",
                "src": "6068:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                                  "typeString": "literal_string \"Caller is not approved to log events\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 177,
                            "name": "Identifier",
                            "src": "6078:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 438,
                                  "type": "function (address) view returns (bool)",
                                  "value": "approvedToLog"
                                },
                                "id": 178,
                                "name": "Identifier",
                                "src": "6099:13:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18360,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 179,
                                    "name": "Identifier",
                                    "src": "6113:3:0"
                                  }
                                ],
                                "id": 180,
                                "name": "MemberAccess",
                                "src": "6113:10:0"
                              }
                            ],
                            "id": 181,
                            "name": "FunctionCall",
                            "src": "6099:25:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Caller is not approved to log events\"",
                              "value": "Caller is not approved to log events"
                            },
                            "id": 182,
                            "name": "Literal",
                            "src": "6138:38:0"
                          }
                        ],
                        "id": 183,
                        "name": "FunctionCall",
                        "src": "6078:108:0"
                      }
                    ],
                    "id": 184,
                    "name": "ExpressionStatement",
                    "src": "6078:108:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 41,
                              "type": "function (address,bytes32,bytes32,bytes32,uint256)",
                              "value": "GotRedemptionSignature"
                            },
                            "id": 185,
                            "name": "Identifier",
                            "src": "6201:22:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 186,
                                "name": "Identifier",
                                "src": "6237:3:0"
                              }
                            ],
                            "id": 187,
                            "name": "MemberAccess",
                            "src": "6237:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 170,
                              "type": "bytes32",
                              "value": "_digest"
                            },
                            "id": 188,
                            "name": "Identifier",
                            "src": "6261:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 172,
                              "type": "bytes32",
                              "value": "_r"
                            },
                            "id": 189,
                            "name": "Identifier",
                            "src": "6282:2:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 174,
                              "type": "bytes32",
                              "value": "_s"
                            },
                            "id": 190,
                            "name": "Identifier",
                            "src": "6298:2:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 191,
                                "name": "Identifier",
                                "src": "6314:5:0"
                              }
                            ],
                            "id": 192,
                            "name": "MemberAccess",
                            "src": "6314:15:0"
                          }
                        ],
                        "id": 193,
                        "name": "FunctionCall",
                        "src": "6201:138:0"
                      }
                    ],
                    "id": 194,
                    "name": "EmitStatement",
                    "src": "6196:143:0"
                  }
                ],
                "id": 195,
                "name": "Block",
                "src": "6068:278:0"
              }
            ],
            "id": 196,
            "name": "FunctionDefinition",
            "src": "5971:375:0"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a RegisteredPubkey event.\n @dev        We append the sender, which is the deposit contract that called.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logRegisteredPubkey",
              "scope": 439,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_signingGroupPubkeyX",
                      "scope": 221,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 197,
                        "name": "ElementaryTypeName",
                        "src": "6527:7:0"
                      }
                    ],
                    "id": 198,
                    "name": "VariableDeclaration",
                    "src": "6527:28:0"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_signingGroupPubkeyY",
                      "scope": 221,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 199,
                        "name": "ElementaryTypeName",
                        "src": "6565:7:0"
                      }
                    ],
                    "id": 200,
                    "name": "VariableDeclaration",
                    "src": "6565:28:0"
                  }
                ],
                "id": 201,
                "name": "ParameterList",
                "src": "6517:82:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 202,
                "name": "ParameterList",
                "src": "6609:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                                  "typeString": "literal_string \"Caller is not approved to log events\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 203,
                            "name": "Identifier",
                            "src": "6619:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 438,
                                  "type": "function (address) view returns (bool)",
                                  "value": "approvedToLog"
                                },
                                "id": 204,
                                "name": "Identifier",
                                "src": "6640:13:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18360,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 205,
                                    "name": "Identifier",
                                    "src": "6654:3:0"
                                  }
                                ],
                                "id": 206,
                                "name": "MemberAccess",
                                "src": "6654:10:0"
                              }
                            ],
                            "id": 207,
                            "name": "FunctionCall",
                            "src": "6640:25:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Caller is not approved to log events\"",
                              "value": "Caller is not approved to log events"
                            },
                            "id": 208,
                            "name": "Literal",
                            "src": "6679:38:0"
                          }
                        ],
                        "id": 209,
                        "name": "FunctionCall",
                        "src": "6619:108:0"
                      }
                    ],
                    "id": 210,
                    "name": "ExpressionStatement",
                    "src": "6619:108:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 51,
                              "type": "function (address,bytes32,bytes32,uint256)",
                              "value": "RegisteredPubkey"
                            },
                            "id": 211,
                            "name": "Identifier",
                            "src": "6742:16:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 212,
                                "name": "Identifier",
                                "src": "6772:3:0"
                              }
                            ],
                            "id": 213,
                            "name": "MemberAccess",
                            "src": "6772:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 198,
                              "type": "bytes32",
                              "value": "_signingGroupPubkeyX"
                            },
                            "id": 214,
                            "name": "Identifier",
                            "src": "6796:20:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 200,
                              "type": "bytes32",
                              "value": "_signingGroupPubkeyY"
                            },
                            "id": 215,
                            "name": "Identifier",
                            "src": "6830:20:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 216,
                                "name": "Identifier",
                                "src": "6864:5:0"
                              }
                            ],
                            "id": 217,
                            "name": "MemberAccess",
                            "src": "6864:15:0"
                          }
                        ],
                        "id": 218,
                        "name": "FunctionCall",
                        "src": "6742:147:0"
                      }
                    ],
                    "id": 219,
                    "name": "EmitStatement",
                    "src": "6737:152:0"
                  }
                ],
                "id": 220,
                "name": "Block",
                "src": "6609:287:0"
              }
            ],
            "id": 221,
            "name": "FunctionDefinition",
            "src": "6489:407:0"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a SetupFailed event.\n @dev        We append the sender, which is the deposit contract that called.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logSetupFailed",
              "scope": 439,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 222,
                "name": "ParameterList",
                "src": "7057:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 223,
                "name": "ParameterList",
                "src": "7069:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                                  "typeString": "literal_string \"Caller is not approved to log events\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 224,
                            "name": "Identifier",
                            "src": "7079:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 438,
                                  "type": "function (address) view returns (bool)",
                                  "value": "approvedToLog"
                                },
                                "id": 225,
                                "name": "Identifier",
                                "src": "7100:13:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18360,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 226,
                                    "name": "Identifier",
                                    "src": "7114:3:0"
                                  }
                                ],
                                "id": 227,
                                "name": "MemberAccess",
                                "src": "7114:10:0"
                              }
                            ],
                            "id": 228,
                            "name": "FunctionCall",
                            "src": "7100:25:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Caller is not approved to log events\"",
                              "value": "Caller is not approved to log events"
                            },
                            "id": 229,
                            "name": "Literal",
                            "src": "7139:38:0"
                          }
                        ],
                        "id": 230,
                        "name": "FunctionCall",
                        "src": "7079:108:0"
                      }
                    ],
                    "id": 231,
                    "name": "ExpressionStatement",
                    "src": "7079:108:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 57,
                              "type": "function (address,uint256)",
                              "value": "SetupFailed"
                            },
                            "id": 232,
                            "name": "Identifier",
                            "src": "7202:11:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 233,
                                "name": "Identifier",
                                "src": "7214:3:0"
                              }
                            ],
                            "id": 234,
                            "name": "MemberAccess",
                            "src": "7214:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 235,
                                "name": "Identifier",
                                "src": "7226:5:0"
                              }
                            ],
                            "id": 236,
                            "name": "MemberAccess",
                            "src": "7226:15:0"
                          }
                        ],
                        "id": 237,
                        "name": "FunctionCall",
                        "src": "7202:40:0"
                      }
                    ],
                    "id": 238,
                    "name": "EmitStatement",
                    "src": "7197:45:0"
                  }
                ],
                "id": 239,
                "name": "Block",
                "src": "7069:180:0"
              }
            ],
            "id": 240,
            "name": "FunctionDefinition",
            "src": "7034:215:0"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a FunderAbortRequested event.\n @dev        We append the sender, which is the deposit contract that called.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logFunderRequestedAbort",
              "scope": 439,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_abortOutputScript",
                      "scope": 260,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 241,
                        "name": "ElementaryTypeName",
                        "src": "7429:5:0"
                      }
                    ],
                    "id": 242,
                    "name": "VariableDeclaration",
                    "src": "7429:31:0"
                  }
                ],
                "id": 243,
                "name": "ParameterList",
                "src": "7428:33:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 244,
                "name": "ParameterList",
                "src": "7469:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                                  "typeString": "literal_string \"Caller is not approved to log events\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 245,
                            "name": "Identifier",
                            "src": "7536:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 438,
                                  "type": "function (address) view returns (bool)",
                                  "value": "approvedToLog"
                                },
                                "id": 246,
                                "name": "Identifier",
                                "src": "7557:13:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18360,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 247,
                                    "name": "Identifier",
                                    "src": "7571:3:0"
                                  }
                                ],
                                "id": 248,
                                "name": "MemberAccess",
                                "src": "7571:10:0"
                              }
                            ],
                            "id": 249,
                            "name": "FunctionCall",
                            "src": "7557:25:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Caller is not approved to log events\"",
                              "value": "Caller is not approved to log events"
                            },
                            "id": 250,
                            "name": "Literal",
                            "src": "7596:38:0"
                          }
                        ],
                        "id": 251,
                        "name": "FunctionCall",
                        "src": "7536:108:0"
                      }
                    ],
                    "id": 252,
                    "name": "ExpressionStatement",
                    "src": "7536:108:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 63,
                              "type": "function (address,bytes memory)",
                              "value": "FunderAbortRequested"
                            },
                            "id": 253,
                            "name": "Identifier",
                            "src": "7659:20:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 254,
                                "name": "Identifier",
                                "src": "7680:3:0"
                              }
                            ],
                            "id": 255,
                            "name": "MemberAccess",
                            "src": "7680:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 242,
                              "type": "bytes memory",
                              "value": "_abortOutputScript"
                            },
                            "id": 256,
                            "name": "Identifier",
                            "src": "7692:18:0"
                          }
                        ],
                        "id": 257,
                        "name": "FunctionCall",
                        "src": "7659:52:0"
                      }
                    ],
                    "id": 258,
                    "name": "EmitStatement",
                    "src": "7654:57:0"
                  }
                ],
                "id": 259,
                "name": "Block",
                "src": "7469:249:0"
              }
            ],
            "id": 260,
            "name": "FunctionDefinition",
            "src": "7396:322:0"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a FraudDuringSetup event.\n @dev        We append the sender, which is the deposit contract that called.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logFraudDuringSetup",
              "scope": 439,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 261,
                "name": "ParameterList",
                "src": "7889:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 262,
                "name": "ParameterList",
                "src": "7901:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                                  "typeString": "literal_string \"Caller is not approved to log events\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 263,
                            "name": "Identifier",
                            "src": "7911:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 438,
                                  "type": "function (address) view returns (bool)",
                                  "value": "approvedToLog"
                                },
                                "id": 264,
                                "name": "Identifier",
                                "src": "7932:13:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18360,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 265,
                                    "name": "Identifier",
                                    "src": "7946:3:0"
                                  }
                                ],
                                "id": 266,
                                "name": "MemberAccess",
                                "src": "7946:10:0"
                              }
                            ],
                            "id": 267,
                            "name": "FunctionCall",
                            "src": "7932:25:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Caller is not approved to log events\"",
                              "value": "Caller is not approved to log events"
                            },
                            "id": 268,
                            "name": "Literal",
                            "src": "7971:38:0"
                          }
                        ],
                        "id": 269,
                        "name": "FunctionCall",
                        "src": "7911:108:0"
                      }
                    ],
                    "id": 270,
                    "name": "ExpressionStatement",
                    "src": "7911:108:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 69,
                              "type": "function (address,uint256)",
                              "value": "FraudDuringSetup"
                            },
                            "id": 271,
                            "name": "Identifier",
                            "src": "8034:16:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 272,
                                "name": "Identifier",
                                "src": "8051:3:0"
                              }
                            ],
                            "id": 273,
                            "name": "MemberAccess",
                            "src": "8051:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 274,
                                "name": "Identifier",
                                "src": "8063:5:0"
                              }
                            ],
                            "id": 275,
                            "name": "MemberAccess",
                            "src": "8063:15:0"
                          }
                        ],
                        "id": 276,
                        "name": "FunctionCall",
                        "src": "8034:45:0"
                      }
                    ],
                    "id": 277,
                    "name": "EmitStatement",
                    "src": "8029:50:0"
                  }
                ],
                "id": 278,
                "name": "Block",
                "src": "7901:185:0"
              }
            ],
            "id": 279,
            "name": "FunctionDefinition",
            "src": "7861:225:0"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a Funded event.\n @dev        We append the sender, which is the deposit contract that called.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logFunded",
              "scope": 439,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txid",
                      "scope": 301,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 280,
                        "name": "ElementaryTypeName",
                        "src": "8238:7:0"
                      }
                    ],
                    "id": 281,
                    "name": "VariableDeclaration",
                    "src": "8238:13:0"
                  }
                ],
                "id": 282,
                "name": "ParameterList",
                "src": "8237:15:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 283,
                "name": "ParameterList",
                "src": "8262:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                                  "typeString": "literal_string \"Caller is not approved to log events\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 284,
                            "name": "Identifier",
                            "src": "8272:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 438,
                                  "type": "function (address) view returns (bool)",
                                  "value": "approvedToLog"
                                },
                                "id": 285,
                                "name": "Identifier",
                                "src": "8293:13:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18360,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 286,
                                    "name": "Identifier",
                                    "src": "8307:3:0"
                                  }
                                ],
                                "id": 287,
                                "name": "MemberAccess",
                                "src": "8307:10:0"
                              }
                            ],
                            "id": 288,
                            "name": "FunctionCall",
                            "src": "8293:25:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Caller is not approved to log events\"",
                              "value": "Caller is not approved to log events"
                            },
                            "id": 289,
                            "name": "Literal",
                            "src": "8332:38:0"
                          }
                        ],
                        "id": 290,
                        "name": "FunctionCall",
                        "src": "8272:108:0"
                      }
                    ],
                    "id": 291,
                    "name": "ExpressionStatement",
                    "src": "8272:108:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 77,
                              "type": "function (address,bytes32,uint256)",
                              "value": "Funded"
                            },
                            "id": 292,
                            "name": "Identifier",
                            "src": "8395:6:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 293,
                                "name": "Identifier",
                                "src": "8402:3:0"
                              }
                            ],
                            "id": 294,
                            "name": "MemberAccess",
                            "src": "8402:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 281,
                              "type": "bytes32",
                              "value": "_txid"
                            },
                            "id": 295,
                            "name": "Identifier",
                            "src": "8414:5:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 296,
                                "name": "Identifier",
                                "src": "8421:5:0"
                              }
                            ],
                            "id": 297,
                            "name": "MemberAccess",
                            "src": "8421:15:0"
                          }
                        ],
                        "id": 298,
                        "name": "FunctionCall",
                        "src": "8395:42:0"
                      }
                    ],
                    "id": 299,
                    "name": "EmitStatement",
                    "src": "8390:47:0"
                  }
                ],
                "id": 300,
                "name": "Block",
                "src": "8262:182:0"
              }
            ],
            "id": 301,
            "name": "FunctionDefinition",
            "src": "8219:225:0"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a CourtesyCalled event.\n @dev        We append the sender, which is the deposit contract that called.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logCourtesyCalled",
              "scope": 439,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 302,
                "name": "ParameterList",
                "src": "8611:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 303,
                "name": "ParameterList",
                "src": "8623:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                                  "typeString": "literal_string \"Caller is not approved to log events\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 304,
                            "name": "Identifier",
                            "src": "8633:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 438,
                                  "type": "function (address) view returns (bool)",
                                  "value": "approvedToLog"
                                },
                                "id": 305,
                                "name": "Identifier",
                                "src": "8654:13:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18360,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 306,
                                    "name": "Identifier",
                                    "src": "8668:3:0"
                                  }
                                ],
                                "id": 307,
                                "name": "MemberAccess",
                                "src": "8668:10:0"
                              }
                            ],
                            "id": 308,
                            "name": "FunctionCall",
                            "src": "8654:25:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Caller is not approved to log events\"",
                              "value": "Caller is not approved to log events"
                            },
                            "id": 309,
                            "name": "Literal",
                            "src": "8693:38:0"
                          }
                        ],
                        "id": 310,
                        "name": "FunctionCall",
                        "src": "8633:108:0"
                      }
                    ],
                    "id": 311,
                    "name": "ExpressionStatement",
                    "src": "8633:108:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 83,
                              "type": "function (address,uint256)",
                              "value": "CourtesyCalled"
                            },
                            "id": 312,
                            "name": "Identifier",
                            "src": "8756:14:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 313,
                                "name": "Identifier",
                                "src": "8771:3:0"
                              }
                            ],
                            "id": 314,
                            "name": "MemberAccess",
                            "src": "8771:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 315,
                                "name": "Identifier",
                                "src": "8783:5:0"
                              }
                            ],
                            "id": 316,
                            "name": "MemberAccess",
                            "src": "8783:15:0"
                          }
                        ],
                        "id": 317,
                        "name": "FunctionCall",
                        "src": "8756:43:0"
                      }
                    ],
                    "id": 318,
                    "name": "EmitStatement",
                    "src": "8751:48:0"
                  }
                ],
                "id": 319,
                "name": "Block",
                "src": "8623:183:0"
              }
            ],
            "id": 320,
            "name": "FunctionDefinition",
            "src": "8585:221:0"
          },
          {
            "attributes": {
              "documentation": "@notice             Fires a StartedLiquidation event.\n @dev                We append the sender, which is the deposit contract that called.\n @param _wasFraud    True if liquidating for fraud.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logStartedLiquidation",
              "scope": 439,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_wasFraud",
                      "scope": 342,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 321,
                        "name": "ElementaryTypeName",
                        "src": "9057:4:0"
                      }
                    ],
                    "id": 322,
                    "name": "VariableDeclaration",
                    "src": "9057:14:0"
                  }
                ],
                "id": 323,
                "name": "ParameterList",
                "src": "9056:16:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 324,
                "name": "ParameterList",
                "src": "9082:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                                  "typeString": "literal_string \"Caller is not approved to log events\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 325,
                            "name": "Identifier",
                            "src": "9092:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 438,
                                  "type": "function (address) view returns (bool)",
                                  "value": "approvedToLog"
                                },
                                "id": 326,
                                "name": "Identifier",
                                "src": "9113:13:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18360,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 327,
                                    "name": "Identifier",
                                    "src": "9127:3:0"
                                  }
                                ],
                                "id": 328,
                                "name": "MemberAccess",
                                "src": "9127:10:0"
                              }
                            ],
                            "id": 329,
                            "name": "FunctionCall",
                            "src": "9113:25:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Caller is not approved to log events\"",
                              "value": "Caller is not approved to log events"
                            },
                            "id": 330,
                            "name": "Literal",
                            "src": "9152:38:0"
                          }
                        ],
                        "id": 331,
                        "name": "FunctionCall",
                        "src": "9092:108:0"
                      }
                    ],
                    "id": 332,
                    "name": "ExpressionStatement",
                    "src": "9092:108:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 97,
                              "type": "function (address,bool,uint256)",
                              "value": "StartedLiquidation"
                            },
                            "id": 333,
                            "name": "Identifier",
                            "src": "9215:18:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 334,
                                "name": "Identifier",
                                "src": "9234:3:0"
                              }
                            ],
                            "id": 335,
                            "name": "MemberAccess",
                            "src": "9234:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 322,
                              "type": "bool",
                              "value": "_wasFraud"
                            },
                            "id": 336,
                            "name": "Identifier",
                            "src": "9246:9:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 337,
                                "name": "Identifier",
                                "src": "9257:5:0"
                              }
                            ],
                            "id": 338,
                            "name": "MemberAccess",
                            "src": "9257:15:0"
                          }
                        ],
                        "id": 339,
                        "name": "FunctionCall",
                        "src": "9215:58:0"
                      }
                    ],
                    "id": 340,
                    "name": "EmitStatement",
                    "src": "9210:63:0"
                  }
                ],
                "id": 341,
                "name": "Block",
                "src": "9082:198:0"
              }
            ],
            "id": 342,
            "name": "FunctionDefinition",
            "src": "9026:254:0"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a Redeemed event\n @dev        We append the sender, which is the deposit contract that called.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logRedeemed",
              "scope": 439,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_txid",
                      "scope": 364,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 343,
                        "name": "ElementaryTypeName",
                        "src": "9435:7:0"
                      }
                    ],
                    "id": 344,
                    "name": "VariableDeclaration",
                    "src": "9435:13:0"
                  }
                ],
                "id": 345,
                "name": "ParameterList",
                "src": "9434:15:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 346,
                "name": "ParameterList",
                "src": "9459:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                                  "typeString": "literal_string \"Caller is not approved to log events\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 347,
                            "name": "Identifier",
                            "src": "9469:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 438,
                                  "type": "function (address) view returns (bool)",
                                  "value": "approvedToLog"
                                },
                                "id": 348,
                                "name": "Identifier",
                                "src": "9490:13:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18360,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 349,
                                    "name": "Identifier",
                                    "src": "9504:3:0"
                                  }
                                ],
                                "id": 350,
                                "name": "MemberAccess",
                                "src": "9504:10:0"
                              }
                            ],
                            "id": 351,
                            "name": "FunctionCall",
                            "src": "9490:25:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Caller is not approved to log events\"",
                              "value": "Caller is not approved to log events"
                            },
                            "id": 352,
                            "name": "Literal",
                            "src": "9529:38:0"
                          }
                        ],
                        "id": 353,
                        "name": "FunctionCall",
                        "src": "9469:108:0"
                      }
                    ],
                    "id": 354,
                    "name": "ExpressionStatement",
                    "src": "9469:108:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 105,
                              "type": "function (address,bytes32,uint256)",
                              "value": "Redeemed"
                            },
                            "id": 355,
                            "name": "Identifier",
                            "src": "9592:8:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 356,
                                "name": "Identifier",
                                "src": "9601:3:0"
                              }
                            ],
                            "id": 357,
                            "name": "MemberAccess",
                            "src": "9601:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 344,
                              "type": "bytes32",
                              "value": "_txid"
                            },
                            "id": 358,
                            "name": "Identifier",
                            "src": "9613:5:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 359,
                                "name": "Identifier",
                                "src": "9620:5:0"
                              }
                            ],
                            "id": 360,
                            "name": "MemberAccess",
                            "src": "9620:15:0"
                          }
                        ],
                        "id": 361,
                        "name": "FunctionCall",
                        "src": "9592:44:0"
                      }
                    ],
                    "id": 362,
                    "name": "EmitStatement",
                    "src": "9587:49:0"
                  }
                ],
                "id": 363,
                "name": "Block",
                "src": "9459:184:0"
              }
            ],
            "id": 364,
            "name": "FunctionDefinition",
            "src": "9414:229:0"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a Liquidated event\n @dev        We append the sender, which is the deposit contract that called.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logLiquidated",
              "scope": 439,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 365,
                "name": "ParameterList",
                "src": "9801:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 366,
                "name": "ParameterList",
                "src": "9813:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                                  "typeString": "literal_string \"Caller is not approved to log events\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 367,
                            "name": "Identifier",
                            "src": "9823:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 438,
                                  "type": "function (address) view returns (bool)",
                                  "value": "approvedToLog"
                                },
                                "id": 368,
                                "name": "Identifier",
                                "src": "9844:13:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18360,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 369,
                                    "name": "Identifier",
                                    "src": "9858:3:0"
                                  }
                                ],
                                "id": 370,
                                "name": "MemberAccess",
                                "src": "9858:10:0"
                              }
                            ],
                            "id": 371,
                            "name": "FunctionCall",
                            "src": "9844:25:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Caller is not approved to log events\"",
                              "value": "Caller is not approved to log events"
                            },
                            "id": 372,
                            "name": "Literal",
                            "src": "9883:38:0"
                          }
                        ],
                        "id": 373,
                        "name": "FunctionCall",
                        "src": "9823:108:0"
                      }
                    ],
                    "id": 374,
                    "name": "ExpressionStatement",
                    "src": "9823:108:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 111,
                              "type": "function (address,uint256)",
                              "value": "Liquidated"
                            },
                            "id": 375,
                            "name": "Identifier",
                            "src": "9946:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 376,
                                "name": "Identifier",
                                "src": "9957:3:0"
                              }
                            ],
                            "id": 377,
                            "name": "MemberAccess",
                            "src": "9957:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 378,
                                "name": "Identifier",
                                "src": "9969:5:0"
                              }
                            ],
                            "id": 379,
                            "name": "MemberAccess",
                            "src": "9969:15:0"
                          }
                        ],
                        "id": 380,
                        "name": "FunctionCall",
                        "src": "9946:39:0"
                      }
                    ],
                    "id": 381,
                    "name": "EmitStatement",
                    "src": "9941:44:0"
                  }
                ],
                "id": 382,
                "name": "Block",
                "src": "9813:179:0"
              }
            ],
            "id": 383,
            "name": "FunctionDefinition",
            "src": "9779:213:0"
          },
          {
            "attributes": {
              "documentation": "@notice     Fires a ExitedCourtesyCall event\n @dev        We append the sender, which is the deposit contract that called.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "logExitedCourtesyCall",
              "scope": 439,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 384,
                "name": "ParameterList",
                "src": "10166:2:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 385,
                "name": "ParameterList",
                "src": "10178:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_33872c885d8df692b1a1efe369a98f08b5d41499f96692fd759016a9cd034a7d",
                                  "typeString": "literal_string \"Caller is not approved to log events\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 386,
                            "name": "Identifier",
                            "src": "10188:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 438,
                                  "type": "function (address) view returns (bool)",
                                  "value": "approvedToLog"
                                },
                                "id": 387,
                                "name": "Identifier",
                                "src": "10209:13:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 18360,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 388,
                                    "name": "Identifier",
                                    "src": "10223:3:0"
                                  }
                                ],
                                "id": 389,
                                "name": "MemberAccess",
                                "src": "10223:10:0"
                              }
                            ],
                            "id": 390,
                            "name": "FunctionCall",
                            "src": "10209:25:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616c6c6572206973206e6f7420617070726f76656420746f206c6f67206576656e7473",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Caller is not approved to log events\"",
                              "value": "Caller is not approved to log events"
                            },
                            "id": 391,
                            "name": "Literal",
                            "src": "10248:38:0"
                          }
                        ],
                        "id": 392,
                        "name": "FunctionCall",
                        "src": "10188:108:0"
                      }
                    ],
                    "id": 393,
                    "name": "ExpressionStatement",
                    "src": "10188:108:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 89,
                              "type": "function (address,uint256)",
                              "value": "ExitedCourtesyCall"
                            },
                            "id": 394,
                            "name": "Identifier",
                            "src": "10311:18:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address payable"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18360,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 395,
                                "name": "Identifier",
                                "src": "10330:3:0"
                              }
                            ],
                            "id": 396,
                            "name": "MemberAccess",
                            "src": "10330:10:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "timestamp",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 18350,
                                  "type": "block",
                                  "value": "block"
                                },
                                "id": 397,
                                "name": "Identifier",
                                "src": "10342:5:0"
                              }
                            ],
                            "id": 398,
                            "name": "MemberAccess",
                            "src": "10342:15:0"
                          }
                        ],
                        "id": 399,
                        "name": "FunctionCall",
                        "src": "10311:47:0"
                      }
                    ],
                    "id": 400,
                    "name": "EmitStatement",
                    "src": "10306:52:0"
                  }
                ],
                "id": 401,
                "name": "Block",
                "src": "10178:187:0"
              }
            ],
            "id": 402,
            "name": "FunctionDefinition",
            "src": "10136:229:0"
          },
          {
            "attributes": {
              "documentation": "@notice               Sets the tbtcDepositToken contract.\n @dev                  The contract is used by `approvedToLog` to check if the\n                       caller is a Deposit contract. This should only be called once.\n @param  _tbtcDepositTokenAddress  The address of the tbtcDepositToken.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "setTbtcDepositToken",
              "scope": 439,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "internal"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_tbtcDepositTokenAddress",
                      "scope": 423,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "contract TBTCDepositToken",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "TBTCDepositToken",
                          "referencedDeclaration": 6844,
                          "type": "contract TBTCDepositToken"
                        },
                        "id": 403,
                        "name": "UserDefinedTypeName",
                        "src": "10724:16:0"
                      }
                    ],
                    "id": 404,
                    "name": "VariableDeclaration",
                    "src": "10724:41:0"
                  }
                ],
                "id": 405,
                "name": "ParameterList",
                "src": "10723:43:0"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 406,
                "name": "ParameterList",
                "src": "10788:0:0"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_e0429be2396896f4ac46ab40f9d50e1164503adb8719eaf266ed3036a4baa208",
                                  "typeString": "literal_string \"tbtcDepositToken is already set\""
                                }
                              ],
                              "overloadedDeclarations": [
                                18363,
                                18364
                              ],
                              "referencedDeclaration": 18364,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 407,
                            "name": "Identifier",
                            "src": "10798:7:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_TBTCDepositToken_$6844",
                                          "typeString": "contract TBTCDepositToken"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 408,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "10819:7:0"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 5,
                                      "type": "contract TBTCDepositToken",
                                      "value": "tbtcDepositToken"
                                    },
                                    "id": 409,
                                    "name": "Identifier",
                                    "src": "10827:16:0"
                                  }
                                ],
                                "id": 410,
                                "name": "FunctionCall",
                                "src": "10819:25:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address payable",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 411,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "10848:7:0"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 412,
                                    "name": "Literal",
                                    "src": "10856:1:0"
                                  }
                                ],
                                "id": 413,
                                "name": "FunctionCall",
                                "src": "10848:10:0"
                              }
                            ],
                            "id": 414,
                            "name": "BinaryOperation",
                            "src": "10819:39:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "746274634465706f736974546f6b656e20697320616c726561647920736574",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"tbtcDepositToken is already set\"",
                              "value": "tbtcDepositToken is already set"
                            },
                            "id": 415,
                            "name": "Literal",
                            "src": "10872:33:0"
                          }
                        ],
                        "id": 416,
                        "name": "FunctionCall",
                        "src": "10798:117:0"
                      }
                    ],
                    "id": 417,
                    "name": "ExpressionStatement",
                    "src": "10798:117:0"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "contract TBTCDepositToken"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 5,
                              "type": "contract TBTCDepositToken",
                              "value": "tbtcDepositToken"
                            },
                            "id": 418,
                            "name": "Identifier",
                            "src": "10925:16:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 404,
                              "type": "contract TBTCDepositToken",
                              "value": "_tbtcDepositTokenAddress"
                            },
                            "id": 419,
                            "name": "Identifier",
                            "src": "10944:24:0"
                          }
                        ],
                        "id": 420,
                        "name": "Assignment",
                        "src": "10925:43:0"
                      }
                    ],
                    "id": 421,
                    "name": "ExpressionStatement",
                    "src": "10925:43:0"
                  }
                ],
                "id": 422,
                "name": "Block",
                "src": "10788:187:0"
              }
            ],
            "id": 423,
            "name": "FunctionDefinition",
            "src": "10695:280:0"
          },
          {
            "attributes": {
              "documentation": "@notice             Checks if an address is an allowed logger.\n @dev                checks tbtcDepositToken to see if the caller represents\n                     an existing deposit.\n                     We don't require this, so deposits are not bricked if the system borks.\n @param  _caller     The address of the calling contract.\n @return             True if approved, otherwise false.",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "approvedToLog",
              "scope": 439,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "_caller",
                      "scope": 438,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 424,
                        "name": "ElementaryTypeName",
                        "src": "11463:7:0"
                      }
                    ],
                    "id": 425,
                    "name": "VariableDeclaration",
                    "src": "11463:15:0"
                  }
                ],
                "id": 426,
                "name": "ParameterList",
                "src": "11462:17:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 438,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 427,
                        "name": "ElementaryTypeName",
                        "src": "11501:4:0"
                      }
                    ],
                    "id": 428,
                    "name": "VariableDeclaration",
                    "src": "11501:4:0"
                  }
                ],
                "id": 429,
                "name": "ParameterList",
                "src": "11500:6:0"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 429
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "exists",
                              "referencedDeclaration": 6810,
                              "type": "function (uint256) view external returns (bool)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 5,
                                  "type": "contract TBTCDepositToken",
                                  "value": "tbtcDepositToken"
                                },
                                "id": 430,
                                "name": "Identifier",
                                "src": "11524:16:0"
                              }
                            ],
                            "id": 431,
                            "name": "MemberAccess",
                            "src": "11524:23:0"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)",
                                  "value": "uint256"
                                },
                                "id": 432,
                                "name": "ElementaryTypeNameExpression",
                                "src": "11548:7:0"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 425,
                                  "type": "address",
                                  "value": "_caller"
                                },
                                "id": 433,
                                "name": "Identifier",
                                "src": "11556:7:0"
                              }
                            ],
                            "id": 434,
                            "name": "FunctionCall",
                            "src": "11548:16:0"
                          }
                        ],
                        "id": 435,
                        "name": "FunctionCall",
                        "src": "11524:41:0"
                      }
                    ],
                    "id": 436,
                    "name": "Return",
                    "src": "11517:48:0"
                  }
                ],
                "id": 437,
                "name": "Block",
                "src": "11507:65:0"
              }
            ],
            "id": 438,
            "name": "FunctionDefinition",
            "src": "11440:132:0"
          }
        ],
        "id": 439,
        "name": "ContractDefinition",
        "src": "385:11189:0"
      }
    ],
    "id": 440,
    "name": "SourceUnit",
    "src": "0:11575:0"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.17+commit.d19bba13.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.3.4",
  "updatedAt": "2021-11-23T12:01:17.146Z",
  "networkType": "ethereum",
  "devdoc": {
    "methods": {
      "approvedToLog(address)": {
        "details": "checks tbtcDepositToken to see if the caller represents                     an existing deposit.                     We don't require this, so deposits are not bricked if the system borks.",
        "params": {
          "_caller": "The address of the calling contract."
        },
        "return": "True if approved, otherwise false."
      },
      "logCourtesyCalled()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logCreated(address)": {
        "details": "We append the sender, which is the deposit contract that called.",
        "params": {
          "_keepAddress": "The address of the associated keep."
        },
        "return": "True if successful, else revert."
      },
      "logExitedCourtesyCall()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logFraudDuringSetup()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logFunded(bytes32)": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logFunderRequestedAbort(bytes)": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logGotRedemptionSignature(bytes32,bytes32,bytes32)": {
        "details": "We append the sender, which is the deposit contract that called.",
        "params": {
          "_digest": "signed digest.",
          "_r": "signature r value.",
          "_s": "signature s value."
        }
      },
      "logLiquidated()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logRedeemed(bytes32)": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logRedemptionRequested(address,bytes32,uint256,bytes,uint256,bytes)": {
        "details": "This is the only event without an explicit timestamp.",
        "params": {
          "_digest": "The calculated sighash digest.",
          "_outpoint": "The 36 byte outpoint.",
          "_redeemerOutputScript": "The redeemer's length-prefixed output script.",
          "_requestedFee": "The requester or bump-system specified fee.",
          "_requester": "The ethereum address of the requester.",
          "_utxoValue": "The size of the utxo in sat."
        },
        "return": "True if successful, else revert."
      },
      "logRegisteredPubkey(bytes32,bytes32)": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logSetupFailed()": {
        "details": "We append the sender, which is the deposit contract that called."
      },
      "logStartedLiquidation(bool)": {
        "details": "We append the sender, which is the deposit contract that called.",
        "params": {
          "_wasFraud": "True if liquidating for fraud."
        }
      }
    }
  },
  "userdoc": {
    "methods": {
      "approvedToLog(address)": {
        "notice": "Checks if an address is an allowed logger."
      },
      "logCourtesyCalled()": {
        "notice": "Fires a CourtesyCalled event."
      },
      "logCreated(address)": {
        "notice": "Fires a Created event."
      },
      "logExitedCourtesyCall()": {
        "notice": "Fires a ExitedCourtesyCall event"
      },
      "logFraudDuringSetup()": {
        "notice": "Fires a FraudDuringSetup event."
      },
      "logFunded(bytes32)": {
        "notice": "Fires a Funded event."
      },
      "logFunderRequestedAbort(bytes)": {
        "notice": "Fires a FunderAbortRequested event."
      },
      "logGotRedemptionSignature(bytes32,bytes32,bytes32)": {
        "notice": "Fires a GotRedemptionSignature event."
      },
      "logLiquidated()": {
        "notice": "Fires a Liquidated event"
      },
      "logRedeemed(bytes32)": {
        "notice": "Fires a Redeemed event"
      },
      "logRedemptionRequested(address,bytes32,uint256,bytes,uint256,bytes)": {
        "notice": "Fires a RedemptionRequested event."
      },
      "logRegisteredPubkey(bytes32,bytes32)": {
        "notice": "Fires a RegisteredPubkey event."
      },
      "logSetupFailed()": {
        "notice": "Fires a SetupFailed event."
      },
      "logStartedLiquidation(bool)": {
        "notice": "Fires a StartedLiquidation event."
      }
    }
  }
}