{
  "contractName": "Bridge",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "domainID",
          "type": "uint8"
        },
        {
          "internalType": "address[]",
          "name": "initialRelayers",
          "type": "address[]"
        },
        {
          "internalType": "uint256",
          "name": "initialRelayerThreshold",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "fee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiry",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "destinationDomainID",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "resourceID",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "depositNonce",
          "type": "uint64"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "handlerResponse",
          "type": "bytes"
        }
      ],
      "name": "Deposit",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "lowLevelData",
          "type": "bytes"
        }
      ],
      "name": "FailedHandlerExecution",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "originDomainID",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "depositNonce",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "enum Bridge.ProposalStatus",
          "name": "status",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "dataHash",
          "type": "bytes32"
        }
      ],
      "name": "ProposalEvent",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "originDomainID",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint64",
          "name": "depositNonce",
          "type": "uint64"
        },
        {
          "indexed": false,
          "internalType": "enum Bridge.ProposalStatus",
          "name": "status",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "dataHash",
          "type": "bytes32"
        }
      ],
      "name": "ProposalVote",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "RelayerAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "RelayerRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newThreshold",
          "type": "uint256"
        }
      ],
      "name": "RelayerThresholdChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "MAX_RELAYERS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "RELAYER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "name": "_depositCounts",
      "outputs": [
        {
          "internalType": "uint64",
          "name": "",
          "type": "uint64"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "_domainID",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "_expiry",
      "outputs": [
        {
          "internalType": "uint40",
          "name": "",
          "type": "uint40"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "_fee",
      "outputs": [
        {
          "internalType": "uint128",
          "name": "",
          "type": "uint128"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "_relayerThreshold",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "_resourceIDToHandlerAddress",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getRoleMember",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleMemberCount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "getRoleMemberIndex",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint72",
          "name": "destNonce",
          "type": "uint72"
        },
        {
          "internalType": "bytes32",
          "name": "dataHash",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "_hasVotedOnProposal",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayer",
          "type": "address"
        }
      ],
      "name": "isRelayer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newAdmin",
          "type": "address"
        }
      ],
      "name": "renounceAdmin",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "adminPauseTransfers",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "adminUnpauseTransfers",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newThreshold",
          "type": "uint256"
        }
      ],
      "name": "adminChangeRelayerThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayerAddress",
          "type": "address"
        }
      ],
      "name": "adminAddRelayer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "relayerAddress",
          "type": "address"
        }
      ],
      "name": "adminRemoveRelayer",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "handlerAddress",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "resourceID",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        }
      ],
      "name": "adminSetResource",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "handlerAddress",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "resourceID",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "contractAddress",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "depositFunctionSig",
          "type": "bytes4"
        },
        {
          "internalType": "uint256",
          "name": "depositFunctionDepositerOffset",
          "type": "uint256"
        },
        {
          "internalType": "bytes4",
          "name": "executeFunctionSig",
          "type": "bytes4"
        }
      ],
      "name": "adminSetGenericResource",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "handlerAddress",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "tokenAddress",
          "type": "address"
        }
      ],
      "name": "adminSetBurnable",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "domainID",
          "type": "uint8"
        },
        {
          "internalType": "uint64",
          "name": "nonce",
          "type": "uint64"
        }
      ],
      "name": "adminSetDepositNonce",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "originDomainID",
          "type": "uint8"
        },
        {
          "internalType": "uint64",
          "name": "depositNonce",
          "type": "uint64"
        },
        {
          "internalType": "bytes32",
          "name": "dataHash",
          "type": "bytes32"
        }
      ],
      "name": "getProposal",
      "outputs": [
        {
          "components": [
            {
              "internalType": "enum Bridge.ProposalStatus",
              "name": "_status",
              "type": "uint8"
            },
            {
              "internalType": "uint200",
              "name": "_yesVotes",
              "type": "uint200"
            },
            {
              "internalType": "uint8",
              "name": "_yesVotesTotal",
              "type": "uint8"
            },
            {
              "internalType": "uint40",
              "name": "_proposedBlock",
              "type": "uint40"
            }
          ],
          "internalType": "struct Bridge.Proposal",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "_totalRelayers",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newFee",
          "type": "uint256"
        }
      ],
      "name": "adminChangeFee",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "handlerAddress",
          "type": "address"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "adminWithdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "destinationDomainID",
          "type": "uint8"
        },
        {
          "internalType": "bytes32",
          "name": "resourceID",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "deposit",
      "outputs": [],
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "domainID",
          "type": "uint8"
        },
        {
          "internalType": "uint64",
          "name": "depositNonce",
          "type": "uint64"
        },
        {
          "internalType": "bytes32",
          "name": "resourceID",
          "type": "bytes32"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        }
      ],
      "name": "voteProposal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "domainID",
          "type": "uint8"
        },
        {
          "internalType": "uint64",
          "name": "depositNonce",
          "type": "uint64"
        },
        {
          "internalType": "bytes32",
          "name": "dataHash",
          "type": "bytes32"
        }
      ],
      "name": "cancelProposal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "domainID",
          "type": "uint8"
        },
        {
          "internalType": "uint64",
          "name": "depositNonce",
          "type": "uint64"
        },
        {
          "internalType": "bytes",
          "name": "data",
          "type": "bytes"
        },
        {
          "internalType": "bytes32",
          "name": "resourceID",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "revertOnFail",
          "type": "bool"
        }
      ],
      "name": "executeProposal",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address payable[]",
          "name": "addrs",
          "type": "address[]"
        },
        {
          "internalType": "uint256[]",
          "name": "amounts",
          "type": "uint256[]"
        }
      ],
      "name": "transferFunds",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"address[]\",\"name\":\"initialRelayers\",\"type\":\"address[]\"},{\"internalType\":\"uint256\",\"name\":\"initialRelayerThreshold\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"expiry\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"destinationDomainID\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"handlerResponse\",\"type\":\"bytes\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"lowLevelData\",\"type\":\"bytes\"}],\"name\":\"FailedHandlerExecution\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Paused\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"originDomainID\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"ProposalEvent\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint8\",\"name\":\"originDomainID\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"indexed\":false,\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"status\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"ProposalVote\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"RelayerAdded\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"RelayerRemoved\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"RelayerThresholdChanged\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"Unpaused\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DEFAULT_ADMIN_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_RELAYERS\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RELAYER_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"name\":\"_depositCounts\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_domainID\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_expiry\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_fee\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint72\",\"name\":\"destNonce\",\"type\":\"uint72\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"_hasVotedOnProposal\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_relayerThreshold\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"_resourceIDToHandlerAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"_totalRelayers\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayerAddress\",\"type\":\"address\"}],\"name\":\"adminAddRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"adminChangeFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newThreshold\",\"type\":\"uint256\"}],\"name\":\"adminChangeRelayerThreshold\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminPauseTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayerAddress\",\"type\":\"address\"}],\"name\":\"adminRemoveRelayer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"adminSetBurnable\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"nonce\",\"type\":\"uint64\"}],\"name\":\"adminSetDepositNonce\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"contractAddress\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"depositFunctionSig\",\"type\":\"bytes4\"},{\"internalType\":\"uint256\",\"name\":\"depositFunctionDepositerOffset\",\"type\":\"uint256\"},{\"internalType\":\"bytes4\",\"name\":\"executeFunctionSig\",\"type\":\"bytes4\"}],\"name\":\"adminSetGenericResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"adminSetResource\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"adminUnpauseTransfers\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"handlerAddress\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"adminWithdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"cancelProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"destinationDomainID\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"revertOnFail\",\"type\":\"bool\"}],\"name\":\"executeProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"originDomainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"dataHash\",\"type\":\"bytes32\"}],\"name\":\"getProposal\",\"outputs\":[{\"components\":[{\"internalType\":\"enum Bridge.ProposalStatus\",\"name\":\"_status\",\"type\":\"uint8\"},{\"internalType\":\"uint200\",\"name\":\"_yesVotes\",\"type\":\"uint200\"},{\"internalType\":\"uint8\",\"name\":\"_yesVotesTotal\",\"type\":\"uint8\"},{\"internalType\":\"uint40\",\"name\":\"_proposedBlock\",\"type\":\"uint40\"}],\"internalType\":\"struct Bridge.Proposal\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleAdmin\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"index\",\"type\":\"uint256\"}],\"name\":\"getRoleMember\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"getRoleMemberCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"getRoleMemberIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRole\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"relayer\",\"type\":\"address\"}],\"name\":\"isRelayer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"paused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"renounceAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"renounceRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable[]\",\"name\":\"addrs\",\"type\":\"address[]\"},{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"transferFunds\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint8\",\"name\":\"domainID\",\"type\":\"uint8\"},{\"internalType\":\"uint64\",\"name\":\"depositNonce\",\"type\":\"uint64\"},{\"internalType\":\"bytes32\",\"name\":\"resourceID\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"voteProposal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"author\":\"ChainSafe Systems.\",\"kind\":\"dev\",\"methods\":{\"_hasVotedOnProposal(uint72,bytes32,address)\":{\"params\":{\"dataHash\":\"Hash of data to be provided when deposit proposal is executed.\",\"destNonce\":\"destinationDomainID + depositNonce of the proposal.\",\"relayer\":\"Address to check.\"}},\"adminAddRelayer(address)\":{\"params\":{\"relayerAddress\":\"Address of relayer to be added.\"}},\"adminChangeFee(uint256)\":{\"params\":{\"newFee\":\"Value {_fee} will be updated to.\"}},\"adminChangeRelayerThreshold(uint256)\":{\"params\":{\"newThreshold\":\"Value {_relayerThreshold} will be changed to.\"}},\"adminRemoveRelayer(address)\":{\"params\":{\"relayerAddress\":\"Address of relayer to be removed.\"}},\"adminSetBurnable(address,address)\":{\"params\":{\"handlerAddress\":\"Address of handler resource will be set for.\",\"tokenAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\"}},\"adminSetDepositNonce(uint8,uint64)\":{\"params\":{\"domainID\":\"Domain ID for increasing nonce.\",\"nonce\":\"The nonce value to be set.\"}},\"adminSetGenericResource(address,bytes32,address,bytes4,uint256,bytes4)\":{\"params\":{\"contractAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\",\"handlerAddress\":\"Address of handler resource will be set for.\",\"resourceID\":\"ResourceID to be used when making deposits.\"}},\"adminSetResource(address,bytes32,address)\":{\"params\":{\"handlerAddress\":\"Address of handler resource will be set for.\",\"resourceID\":\"ResourceID to be used when making deposits.\",\"tokenAddress\":\"Address of contract to be called when a deposit is made and a deposited is executed.\"}},\"adminWithdraw(address,bytes)\":{\"params\":{\"data\":\"ABI-encoded withdrawal params relevant to the specified handler.\",\"handlerAddress\":\"Address of handler to withdraw from.\"}},\"cancelProposal(uint8,uint64,bytes32)\":{\"params\":{\"dataHash\":\"Hash of data originally provided when deposit was made.\",\"depositNonce\":\"ID of deposited generated by origin Bridge contract.\",\"domainID\":\"ID of chain deposit originated from.\"}},\"constructor\":{\"params\":{\"domainID\":\"ID of chain the Bridge contract exists on.\",\"initialRelayerThreshold\":\"Number of votes needed for a deposit proposal to be considered passed.\",\"initialRelayers\":\"Addresses that should be initially granted the relayer role.\"}},\"deposit(uint8,bytes32,bytes)\":{\"params\":{\"data\":\"Additional data to be passed to specified handler.\",\"destinationDomainID\":\"ID of chain deposit will be bridged to.\",\"resourceID\":\"ResourceID used to find address of handler to be used for deposit.\"}},\"executeProposal(uint8,uint64,bytes,bytes32,bool)\":{\"params\":{\"data\":\"Data originally provided when deposit was made.\",\"depositNonce\":\"ID of deposited generated by origin Bridge contract.\",\"domainID\":\"ID of chain deposit originated from.\",\"resourceID\":\"ResourceID to be used when making deposits.\",\"revertOnFail\":\"Decision if the transaction should be reverted in case of handler's executeProposal is reverted or not.\"}},\"getProposal(uint8,uint64,bytes32)\":{\"params\":{\"dataHash\":\"Hash of data to be provided when deposit proposal is executed.\",\"depositNonce\":\"ID of proposal generated by proposal's origin Bridge contract.\",\"originDomainID\":\"Chain ID deposit originated from.\"},\"returns\":{\"_0\":\"Proposal which consists of: - _dataHash Hash of data to be provided when deposit proposal is executed. - _yesVotes Number of votes in favor of proposal. - _noVotes Number of votes against proposal. - _status Current status of proposal.\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"getRoleMember(bytes32,uint256)\":{\"details\":\"Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information.\"},\"getRoleMemberCount(bytes32)\":{\"details\":\"Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role.\"},\"getRoleMemberIndex(bytes32,address)\":{\"details\":\"Returns the index of the account that have `role`.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"isRelayer(address)\":{\"params\":{\"relayer\":\"Address to check.\"}},\"paused()\":{\"details\":\"Returns true if the contract is paused, and false otherwise.\"},\"renounceAdmin(address)\":{\"params\":{\"newAdmin\":\"Address that admin role will be granted to.\"}},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role.\"},\"transferFunds(address[],uint256[])\":{\"params\":{\"addrs\":\"Array of addresses to transfer {amounts} to.\",\"amounts\":\"Array of amonuts to transfer to {addrs}.\"}},\"voteProposal(uint8,uint64,bytes32,bytes)\":{\"params\":{\"data\":\"Data originally provided when deposit was made.\",\"depositNonce\":\"ID of deposited generated by origin Bridge contract.\",\"domainID\":\"ID of chain deposit originated from.\"}}},\"title\":\"Facilitates deposits, creation and voting of deposit proposals, and deposit executions.\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"_hasVotedOnProposal(uint72,bytes32,address)\":{\"notice\":\"Returns true if {relayer} has voted on {destNonce} {dataHash} proposal.Naming left unchanged for backward compatibility.\"},\"_totalRelayers()\":{\"notice\":\"Returns total relayers number.Added for backwards compatibility.\"},\"adminAddRelayer(address)\":{\"notice\":\"Grants {relayerAddress} the relayer role.Only callable by an address that currently has the admin role, which is checked in grantRole().Emits {RelayerAdded} event.\"},\"adminChangeFee(uint256)\":{\"notice\":\"Changes deposit fee.Only callable by admin.\"},\"adminChangeRelayerThreshold(uint256)\":{\"notice\":\"Modifies the number of votes required for a proposal to be considered passed.Only callable by an address that currently has the admin role.Emits {RelayerThresholdChanged} event.\"},\"adminPauseTransfers()\":{\"notice\":\"Pauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role.\"},\"adminRemoveRelayer(address)\":{\"notice\":\"Removes relayer role for {relayerAddress}.Only callable by an address that currently has the admin role, which is checked in revokeRole().Emits {RelayerRemoved} event.\"},\"adminSetBurnable(address,address)\":{\"notice\":\"Sets a resource as burnable for handler contracts that use the IERCHandler interface.Only callable by an address that currently has the admin role.\"},\"adminSetDepositNonce(uint8,uint64)\":{\"notice\":\"Sets the nonce for the specific domainID.Only callable by an address that currently has the admin role.\"},\"adminSetGenericResource(address,bytes32,address,bytes4,uint256,bytes4)\":{\"notice\":\"Sets a new resource for handler contracts that use the IGenericHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role.\"},\"adminSetResource(address,bytes32,address)\":{\"notice\":\"Sets a new resource for handler contracts that use the IERCHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role.\"},\"adminUnpauseTransfers()\":{\"notice\":\"Unpauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role.\"},\"adminWithdraw(address,bytes)\":{\"notice\":\"Used to manually withdraw funds from ERC safes.\"},\"cancelProposal(uint8,uint64,bytes32)\":{\"notice\":\"Cancels a deposit proposal that has not been executed yet.Only callable by relayers when Bridge is not paused.Proposal must be past expiry threshold.Emits {ProposalEvent} event with status {Cancelled}.\"},\"constructor\":\"Initializes Bridge, creates and grants {msg.sender} the admin role, creates and grants {initialRelayers} the relayer role.\",\"deposit(uint8,bytes32,bytes)\":{\"notice\":\"Initiates a transfer using a specified handler contract.Only callable when Bridge is not paused.Emits {Deposit} event with all necessary parameters and a handler response. - ERC20Handler: responds with an empty data. - ERC721Handler: responds with the deposited token metadata acquired by calling a tokenURI method in the token contract. - GenericHandler: responds with the raw bytes returned from the call to the target contract.\"},\"executeProposal(uint8,uint64,bytes,bytes32,bool)\":{\"notice\":\"Executes a deposit proposal that is considered passed using a specified handler contract.Only callable by relayers when Bridge is not paused.Proposal must have Passed status.Hash of {data} must equal proposal's {dataHash}.Emits {ProposalEvent} event with status {Executed}.Emits {FailedExecution} event with the failed reason.\"},\"getProposal(uint8,uint64,bytes32)\":{\"notice\":\"Returns a proposal.\"},\"isRelayer(address)\":{\"notice\":\"Returns true if {relayer} has the relayer role.\"},\"renounceAdmin(address)\":{\"notice\":\"Removes admin role from {msg.sender} and grants it to {newAdmin}.Only callable by an address that currently has the admin role.\"},\"transferFunds(address[],uint256[])\":{\"notice\":\"Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1. This means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\"},\"voteProposal(uint8,uint64,bytes32,bytes)\":{\"notice\":\"When called, {msg.sender} will be marked as voting in favor of proposal.Only callable by relayers when Bridge is not paused.Proposal must not have already been passed or executed.{msg.sender} must not have already voted on proposal.Emits {ProposalEvent} event with status indicating the proposal status.Emits {ProposalVote} event.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"project:/contracts/Bridge.sol\":\"Bridge\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@openzeppelin/contracts/GSN/Context.sol\":{\"keccak256\":\"0x9486045e189facd2e868ece35249872598ef03f1087fb6fa4d1161842daa2287\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://77c3a04ef8453788b14b1ebbc24dd3f0a18ceb2615cd156aac949a611e552af8\",\"dweb:/ipfs/QmcmqWGguRM3iLuF57tcyrN3F6EA63kzeNkDfQuteBnurr\"]},\"@openzeppelin/contracts/utils/Address.sol\":{\"keccak256\":\"0x28911e614500ae7c607a432a709d35da25f3bc5ddc8bd12b278b66358070c0ea\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://256c8c8af5eb072bc473226ab2b2187149b8fc04f5f4a4820db22527f5ce8e3c\",\"dweb:/ipfs/QmRvi5BhnL7Rxf85KrJhwM6RRhukm4tzoctRdgQEheNyiN\"]},\"@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x8d3cb350f04ff49cfb10aef08d87f19dcbaecc8027b0bed12f3275cd12f38cf0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ded47ec7c96750f9bd04bbbc84f659992d4ba901cb7b532a52cd468272cf378f\",\"dweb:/ipfs/QmfBrGtQP7rZEqEg6Wz6jh2N2Kukpj1z5v3CGWmAqrzm96\"]},\"@openzeppelin/contracts/utils/EnumerableSet.sol\":{\"keccak256\":\"0x1562cd9922fbf739edfb979f506809e2743789cbde3177515542161c3d04b164\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4580d57781513d98870d9738c7d39094336e0a70cdb90d68dad549c6ced466ec\",\"dweb:/ipfs/Qmf9YZzzRFuvMnav9dgmeRUpdYMMECiZX8w25sHWVbA18V\"]},\"project:/contracts/Bridge.sol\":{\"keccak256\":\"0xcc0c0545480f06d0ff744e81c79adff922a715cedd2ba78814f996103f634cdd\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://36a8b261f04e9bc75dfa81e5bdc23315fba21ae12cb66a2a8afc336215b05d34\",\"dweb:/ipfs/QmfD7VuDHVox5bWqRSEK8ejREpEVMSAm77XFyebWGAwf7s\"]},\"project:/contracts/interfaces/IDepositExecute.sol\":{\"keccak256\":\"0x3623f906ae6f354cbf27ffd4eeccbfc2c3baa94783c5dd854b2e0f50db2a7c8d\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://26f8ddafd8655375eeb861a033fe390b3235c4f8de9a54e0524b91d2d1992674\",\"dweb:/ipfs/QmUAsxc8j4UdaDZ5HVp73kAwLpgTqqrgZG1sX86iRKZTqv\"]},\"project:/contracts/interfaces/IERCHandler.sol\":{\"keccak256\":\"0x4384276611a789db6481e1158d92c280fe5990ec0c375df30dd5e8f8a97cbb4c\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://3af488536c6d8f6b3090ca9b5fa54718941604a30f58bd66db641a6599a9f296\",\"dweb:/ipfs/QmSm988tQV4XtkCQpTbf2SbdCHp8AcjYZhQLhftPFXrUf2\"]},\"project:/contracts/interfaces/IGenericHandler.sol\":{\"keccak256\":\"0xb08694c5d5e003ab884d7f22fd616d9603ae60a9d8d48901feb2c2daebfe0d40\",\"license\":\"LGPL-3.0-only\",\"urls\":[\"bzz-raw://310082dd159a2b23c4cf8589a19ef3e31146d2879145c452e4edf63b11389008\",\"dweb:/ipfs/QmRzAnt66RzitcJrwTfxQeK1X1GSo9TEQF7y3WWbYZYxGS\"]},\"project:/contracts/utils/AccessControl.sol\":{\"keccak256\":\"0x0188570bd646df63dd236b997edf12d2e5a566d9fd54b9405c67c6d7eeca353e\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://eaa8a02b8fda3d9a50019cb96fec11cfb80b90250e37e91e0ec6cd945efa9810\",\"dweb:/ipfs/QmZ2nuod9fjYvsCjRr4Bhk6FTES4zsofxsQSDFS24JFaGq\"]},\"project:/contracts/utils/Pausable.sol\":{\"keccak256\":\"0xdb3e06f23d6b39b47c554e28cf83e7da130ffda988b2261544c616b2ce291dac\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3be9b9a9ca3c25d63231fc8e451616e4e9a0278a62e4ba01fb5dcda3f9672b57\",\"dweb:/ipfs/QmRDstUdMb4EBHQL3zue22Pz9Ey2K4qfa2Yp1sQRwgT7YC\"]},\"project:/contracts/utils/SafeCast.sol\":{\"keccak256\":\"0x07a3b86654f9e1a2d49822e82c7b98b8fe68767c21968c95951079c3048e82dc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://21e7bc82101b94d832601e5e2707e25ed93e788e1a363196221748090aafbf30\",\"dweb:/ipfs/QmWcjBuFMXvGsicL3DgegAR6BEt7HnuN9SbSSUHEFWzybk\"]},\"project:/contracts/utils/SafeMath.sol\":{\"keccak256\":\"0xd311c0b947fff45b8b2d2f3037daae297e25b7fc1e151adbb02137280c57f4af\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://908d68e7092418aae30047c58ecf489fde57da07caf04ee29252ba4e25009e0f\",\"dweb:/ipfs/QmYbufMHUrWWNttUVEESjAa2CTB45FkxLap4D6ZTHa4Bin\"]}},\"version\":1}",
  "bytecode": "0x60806040523480156200001157600080fd5b506040516200345a3803806200345a8339810160408190526200003491620003a3565b6000805460ff199081169091556002805490911660ff871617905562000066836200016d602090811b620019dd17901c565b600260016101000a81548160ff021916908360ff1602179055506200009682620001a060201b62001a041760201c565b6002806101000a8154816001600160801b0302191690836001600160801b03160217905550620000d181620001c860201b62001a291760201c565b6002805464ffffffffff92909216600160901b0264ffffffffff60901b1990921691909117905562000105600033620001f2565b60005b84518110156200016157620001587fe2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc48683815181106200014457fe5b60200260200101516200020260201b60201c565b60010162000108565b505050505050620005cb565b600061010082106200019c5760405162461bcd60e51b815260040162000193906200053a565b60405180910390fd5b5090565b6000600160801b82106200019c5760405162461bcd60e51b81526004016200019390620004cc565b60006501000000000082106200019c5760405162461bcd60e51b8152600401620001939062000503565b620001fe828262000248565b5050565b600082815260016020526040902060020154620002299062000223620002c3565b620002c7565b620001f25760405162461bcd60e51b815260040162000193906200047d565b60008281526001602090815260409091206200026f91839062001a50620002f6821b17901c565b15620001fe576200027f620002c3565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b3390565b60008281526001602090815260408220620002ed91849062001a656200030d821b17901c565b90505b92915050565b6000620002ed836001600160a01b03841662000324565b6000620002ed836001600160a01b03841662000373565b600062000332838362000373565b6200036a57508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155620002f0565b506000620002f0565b60009081526001919091016020526040902054151590565b80516001600160a01b0381168114620002f057600080fd5b600080600080600060a08688031215620003bb578081fd5b8551620003c881620005b8565b602087810151919650906001600160401b03811115620003e6578283fd5b8701601f81018913620003f7578283fd5b80516200040e620004088262000598565b62000571565b81815283810190838501858402850186018d10156200042b578687fd5b8694505b838510156200045957620004448d826200038b565b8352600194909401939185019185016200042f565b5060408b015160608c01516080909c01519a9d919c509a9998509650505050505050565b6020808252602f908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526e0818591b5a5b881d1bc819dc985b9d608a1b606082015260800190565b6020808252601e908201527f76616c756520646f6573206e6f742066697420696e2031323820626974730000604082015260600190565b6020808252601d908201527f76616c756520646f6573206e6f742066697420696e2034302062697473000000604082015260600190565b6020808252601c908201527f76616c756520646f6573206e6f742066697420696e2038206269747300000000604082015260600190565b6040518181016001600160401b03811182821017156200059057600080fd5b604052919050565b60006001600160401b03821115620005ae578081fd5b5060209081020190565b60ff81168114620005c857600080fd5b50565b612e7f80620005db6000396000f3fe6080604052600436106102305760003560e01c80639010d07c1161012e578063c0331b3e116100ab578063cdb0f73a1161006f578063cdb0f73a14610678578063d547741f14610698578063d7a9cd79146106b8578063edc20c3c146106cd578063ffaac0eb146106ed57610230565b8063c0331b3e146105d4578063c5b37c22146105f4578063c5ec897014610616578063ca15c87314610638578063cb10f2151461065857610230565b80639dd694f4116100f25780639dd694f41461053b5780639debb3bd1461055d578063a217fddf14610572578063a9cf69fa14610587578063bd2a1820146105b457610230565b80639010d07c146104a657806391c404ac146104c657806391d14854146104e6578063926d7d7f146105065780639d82dd631461051b57610230565b80634e0df3f6116101bc5780637febe63f116101805780637febe63f1461040f578063802aabe81461042f57806380ae1c281461044457806384db809f146104595780638c0c26311461048657610230565b80634e0df3f61461036d578063541d55481461038d5780635a1ad87c146103ba5780635c975abb146103da5780635e1fab0f146103ef57610230565b80632f2ff15d116102035780632f2ff15d146102c057806336568abe146102e05780634603ae38146103005780634b0b919d146103205780634e0560051461034d57610230565b806305e2ca171461023557806317f03ce51461024a578063206a98fd1461026a578063248a9ca31461028a575b600080fd5b61024861024336600461232b565b610702565b005b34801561025657600080fd5b506102486102653660046123a4565b610892565b34801561027657600080fd5b50610248610285366004612451565b610aae565b34801561029657600080fd5b506102aa6102a5366004612217565b610cfe565b6040516102b79190612568565b60405180910390f35b3480156102cc57600080fd5b506102486102db36600461222f565b610d13565b3480156102ec57600080fd5b506102486102fb36600461222f565b610d5b565b34801561030c57600080fd5b5061024861031b3660046121af565b610d9d565b34801561032c57600080fd5b5061034061033b366004612310565b610e2b565b6040516102b79190612c99565b34801561035957600080fd5b50610248610368366004612217565b610e46565b34801561037957600080fd5b506102aa61038836600461222f565b610eab565b34801561039957600080fd5b506103ad6103a836600461201f565b610ed7565b6040516102b7919061255d565b3480156103c657600080fd5b506102486103d53660046120b4565b610ef1565b3480156103e657600080fd5b506103ad610f8b565b3480156103fb57600080fd5b5061024861040a36600461201f565b610f94565b34801561041b57600080fd5b506103ad61042a3660046122e6565b610fde565b34801561043b57600080fd5b506102aa611076565b34801561045057600080fd5b50610248611094565b34801561046557600080fd5b50610479610474366004612217565b6110a6565b6040516102b79190612549565b34801561049257600080fd5b506102486104a136600461203b565b6110c1565b3480156104b257600080fd5b506104796104c1366004612253565b61112e565b3480156104d257600080fd5b506102486104e1366004612217565b61114d565b3480156104f257600080fd5b506103ad61050136600461222f565b6111b7565b34801561051257600080fd5b506102aa6111cf565b34801561052757600080fd5b5061024861053636600461201f565b6111e1565b34801561054757600080fd5b5061055061125c565b6040516102b79190612cad565b34801561056957600080fd5b506102aa611265565b34801561057e57600080fd5b506102aa61126a565b34801561059357600080fd5b506105a76105a23660046123a4565b61126f565b6040516102b79190612c28565b3480156105c057600080fd5b506102486105cf366004612123565b61131e565b3480156105e057600080fd5b506102486105ef3660046123e1565b611354565b34801561060057600080fd5b50610609611797565b6040516102b79190612c73565b34801561062257600080fd5b5061062b6117ac565b6040516102b79190612c87565b34801561064457600080fd5b506102aa610653366004612217565b6117c0565b34801561066457600080fd5b50610248610673366004612073565b6117d7565b34801561068457600080fd5b5061024861069336600461201f565b611868565b3480156106a457600080fd5b506102486106b336600461222f565b61190b565b3480156106c457600080fd5b50610550611945565b3480156106d957600080fd5b506102486106e8366004612377565b611953565b3480156106f957600080fd5b506102486119cd565b61070a611a7a565b6002546201000090046001600160801b031634146107435760405162461bcd60e51b815260040161073a9061281a565b60405180910390fd5b6000838152600460205260409020546001600160a01b0316806107785760405162461bcd60e51b815260040161073a906128b8565b60ff851660009081526003602052604090819020805467ffffffffffffffff19811660016001600160401b039283160191821617909155905163b07e54bb60e01b815282906060906001600160a01b0383169063b07e54bb906107e5908a9033908b908b90600401612588565b600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083b9190810190612274565b9050336001600160a01b03167f17bc3181e17a9620a479c24e6c606e474ba84fc036877b768926872e8cd0e11f8989868a8a8760405161088096959493929190612cbb565b60405180910390a25050505050505050565b61089a611a9d565b68ffffffffffffffff00600883901b1660ff8416176108b7611f47565b6001600160481b0382166000908152600560209081526040808320868452909152908190208151608081019092528054829060ff1660048111156108f757fe5b600481111561090257fe5b8152905461010081046001600160c81b03166020830152600160d01b810460ff166040830152600160d81b900464ffffffffff166060909101528051909150600181600481111561094f57fe5b14806109665750600281600481111561096457fe5b145b6109825760405162461bcd60e51b815260040161073a9061284a565b600254606083015164ffffffffff600160901b9092048216916109a791439116611ae2565b64ffffffffff16116109cb5760405162461bcd60e51b815260040161073a906129a9565b60048083526001600160481b03841660009081526005602090815260408083208884529091529020835181548593839160ff1916906001908490811115610a0e57fe5b02179055506020820151815460408085015160609095015164ffffffffff16600160d81b026001600160d81b0360ff909616600160d01b0260ff60d01b196001600160c81b0390951661010002610100600160d01b03199094169390931793909316919091179390931617905551600080516020612e0a83398151915290610a9e90889088906004908990612d0c565b60405180910390a1505050505050565b610ab6611b24565b610abe611a7a565b60008281526004602090815260408083205490516001600160a01b039091169268ffffffffffffffff0060088a901b1660ff8b1617929091610b069185918a918a910161251d565b60408051601f1981840301815291815281516020928301206001600160481b03851660009081526005845282812082825290935291209091506002815460ff166004811115610b5157fe5b14610b6e5760405162461bcd60e51b815260040161073a90612974565b805460ff19166003178155838515610be75760405163712467f960e11b81526001600160a01b0382169063e248cff290610bb0908a908d908d906004016125f3565b600060405180830381600087803b158015610bca57600080fd5b505af1158015610bde573d6000803e3d6000fd5b50505050610cc4565b60405163712467f960e11b81526001600160a01b0382169063e248cff290610c17908a908d908d906004016125f3565b600060405180830381600087803b158015610c3157600080fd5b505af1925050508015610c42575060015b610cc4573d808015610c70576040519150601f19603f3d011682016040523d82523d6000602084013e610c75565b606091505b50825460ff191660021783556040517fbd37c1f0d53bb2f33fe4c2104de272fcdeb4d2fef3acdbf1e4ddc3d6833ca37690610cb190839061260d565b60405180910390a1505050505050610cf6565b600080516020612e0a8339815191528b8b600386604051610ce89493929190612d0c565b60405180910390a150505050505b505050505050565b60009081526001602052604090206002015490565b600082815260016020526040902060020154610d3190610501611b58565b610d4d5760405162461bcd60e51b815260040161073a90612699565b610d578282611b5c565b5050565b610d63611b58565b6001600160a01b0316816001600160a01b031614610d935760405162461bcd60e51b815260040161073a90612bd9565b610d578282611bc5565b610da5611c2e565b60005b83811015610e2457848482818110610dbc57fe5b9050602002016020810190610dd1919061201f565b6001600160a01b03166108fc848484818110610de957fe5b905060200201359081150290604051600060405180830381858888f19350505050158015610e1b573d6000803e3d6000fd5b50600101610da8565b5050505050565b6003602052600090815260409020546001600160401b031681565b610e4e611c2e565b610e57816119dd565b600260016101000a81548160ff021916908360ff1602179055507fa20d6b84cd798a24038be305eff8a45ca82ef54a2aa2082005d8e14c0a4746c881604051610ea09190612568565b60405180910390a150565b60008281526001602081815260408084206001600160a01b038616855290920190529020545b92915050565b6000610ed1600080516020612e2a833981519152836111b7565b610ef9611c2e565b60008581526004602081905260409182902080546001600160a01b0319166001600160a01b038a16908117909155915163de319d9960e01b815288929163de319d9991610f50918a918a918a918a918a91016125bd565b600060405180830381600087803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b5050505050505050505050565b60005460ff1690565b610f9c611c2e565b336001600160a01b0382161415610fc55760405162461bcd60e51b815260040161073a90612a85565b610fd0600082610d13565b610fdb600033610d5b565b50565b6001600160481b0383166000908152600560209081526040808320858452909152808220815160808101909252805461106e929190829060ff16600481111561102357fe5b600481111561102e57fe5b8152905461010081046001600160c81b03166020830152600160d01b810460ff166040830152600160d81b900464ffffffffff1660609091015283611c55565b949350505050565b600061108f600080516020612e2a8339815191526117c0565b905090565b61109c611c2e565b6110a4611c78565b565b6004602052600090815260409020546001600160a01b031681565b6110c9611c2e565b6040516307b7ed9960e01b815282906001600160a01b038216906307b7ed99906110f7908590600401612549565b600060405180830381600087803b15801561111157600080fd5b505af1158015611125573d6000803e3d6000fd5b50505050505050565b60008281526001602052604081206111469083611cc7565b9392505050565b611155611c2e565b6002546201000090046001600160801b03168114156111865760405162461bcd60e51b815260040161073a90612b28565b61118f81611a04565b6002806101000a8154816001600160801b0302191690836001600160801b0316021790555050565b60008281526001602052604081206111469083611a65565b600080516020612e2a83398151915281565b6111f9600080516020612e2a833981519152826111b7565b6112155760405162461bcd60e51b815260040161073a90612745565b61122d600080516020612e2a8339815191528261190b565b7f10e1f7ce9fd7d1b90a66d13a2ab3cb8dd7f29f3f8d520b143b063ccfbab6906b81604051610ea09190612549565b60025460ff1681565b60c881565b600081565b611277611f47565b6001600160481b0360ff858116600886901b68ffffffffffffffff00161791821660009081526005602090815260408083208784529091529081902081516080810190925280549192909183911660048111156112d057fe5b60048111156112db57fe5b8152905461010081046001600160c81b03166020830152600160d01b810460ff166040830152600160d81b900464ffffffffff1660609091015295945050505050565b611326611c2e565b60405163025a3c9960e21b815282906001600160a01b03821690630968f264906110f790859060040161260d565b61135c611b24565b611364611a7a565b60008381526004602090815260408083205490516001600160a01b039091169268ffffffffffffffff00600889901b1660ff8a16179290916113ac918591889188910161251d565b6040516020818303038152906040528051906020012090506113cc611f47565b6001600160481b0383166000908152600560209081526040808320858452909152908190208151608081019092528054829060ff16600481111561140c57fe5b600481111561141757fe5b8152905461010081046001600160c81b0316602080840191909152600160d01b820460ff16604080850191909152600160d81b90920464ffffffffff1660609093019290925260008a815260049092529020549091506001600160a01b03166114925760405162461bcd60e51b815260040161073a90612b5f565b6002815160048111156114a157fe5b14156114bf576114b6898988888b6001610aae565b50505050610e24565b805160019060048111156114cf57fe5b11156114ed5760405162461bcd60e51b815260040161073a90612b96565b6114f78133611c55565b156115145760405162461bcd60e51b815260040161073a906126e8565b60008151600481111561152357fe5b141561158457506040805160808101825260018082526000602083018190528284015264ffffffffff4316606083015291519091600080516020612e0a83398151915291611577918c918c91908790612d0c565b60405180910390a16115e6565b600254606082015164ffffffffff600160901b9092048216916115a991439116611ae2565b64ffffffffff1611156115e6576004808252604051600080516020612e0a833981519152916115dd918c918c918790612d0c565b60405180910390a15b6004815160048111156115f557fe5b146116bd5761161a61160633611cd3565b82602001516001600160c81b031617611d01565b6001600160c81b031660208201526040808201805160010160ff169052815190517f25f8daaa4635a7729927ba3f5b3d59cc3320aca7c32c9db4e7ca7b95743436409161166c918c918c918790612d0c565b60405180910390a1600254604082015160ff61010090920482169116106116bd576002808252604051600080516020612e0a833981519152916116b4918c918c918790612d0c565b60405180910390a15b6001600160481b038316600090815260056020908152604080832085845290915290208151815483929190829060ff191660018360048111156116fc57fe5b021790555060208201518154604084015160609094015164ffffffffff16600160d81b026001600160d81b0360ff909516600160d01b0260ff60d01b196001600160c81b0390941661010002610100600160d01b03199093169290921792909216179290921691909117905560028151600481111561177757fe5b141561178c5761178c898988888b6000610aae565b505050505050505050565b6002546201000090046001600160801b031681565b600254600160901b900464ffffffffff1681565b6000818152600160205260408120610ed190611d26565b6117df611c2e565b60008281526004602081905260409182902080546001600160a01b0319166001600160a01b0387169081179091559151635c7d1b9b60e11b815285929163b8fa373691611830918791879101612571565b600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b5050505050505050565b611880600080516020612e2a833981519152826111b7565b1561189d5760405162461bcd60e51b815260040161073a90612a4e565b60c86118a7611076565b106118c45760405162461bcd60e51b815260040161073a906127ea565b6118dc600080516020612e2a83398151915282610d13565b7f03580ee9f53a62b7cb409a2cb56f9be87747dd15017afc5cef6eef321e4fb2c581604051610ea09190612549565b60008281526001602052604090206002015461192990610501611b58565b610d935760405162461bcd60e51b815260040161073a90612924565b600254610100900460ff1681565b61195b611c2e565b60ff82166000908152600360205260409020546001600160401b03908116908216116119995760405162461bcd60e51b815260040161073a90612a08565b60ff919091166000908152600360205260409020805467ffffffffffffffff19166001600160401b03909216919091179055565b6119d5611c2e565b6110a4611d31565b60006101008210611a005760405162461bcd60e51b815260040161073a90612881565b5090565b6000600160801b8210611a005760405162461bcd60e51b815260040161073a9061277c565b6000650100000000008210611a005760405162461bcd60e51b815260040161073a906127b3565b6000611146836001600160a01b038416611d73565b6000611146836001600160a01b038416611dbd565b60005460ff16156110a45760405162461bcd60e51b815260040161073a906129de565b611aa86000336111b7565b80611ac65750611ac6600080516020612e2a833981519152336111b7565b6110a45760405162461bcd60e51b815260040161073a90612662565b600061114683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dd5565b611b3c600080516020612e2a833981519152336111b7565b6110a45760405162461bcd60e51b815260040161073a90612abc565b3390565b6000828152600160205260409020611b749082611a50565b15610d5757611b81611b58565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152600160205260409020611bdd9082611e01565b15610d5757611bea611b58565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b611c396000336111b7565b6110a45760405162461bcd60e51b815260040161073a90612af1565b60008083602001516001600160c81b0316611c6f84611cd3565b16119392505050565b611c80611a7a565b6000805460ff191660011790556040517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890611cbd903390612549565b60405180910390a1565b60006111468383611e16565b6000611cf7611cf0600080516020612e2a83398151915284610eab565b6001611ae2565b6001901b92915050565b6000600160c81b8210611a005760405162461bcd60e51b815260040161073a906128ed565b6000610ed182611e5b565b611d39611e5f565b6000805460ff191690556040517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90611cbd903390612549565b6000611d7f8383611dbd565b611db557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ed1565b506000610ed1565b60009081526001919091016020526040902054151590565b60008184841115611df95760405162461bcd60e51b815260040161073a919061260d565b505050900390565b6000611146836001600160a01b038416611e81565b81546000908210611e395760405162461bcd60e51b815260040161073a90612620565b826000018281548110611e4857fe5b9060005260206000200154905092915050565b5490565b60005460ff166110a45760405162461bcd60e51b815260040161073a90612717565b60008181526001830160205260408120548015611f3d5783546000198083019190810190600090879083908110611eb457fe5b9060005260206000200154905080876000018481548110611ed157fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611f0157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610ed1565b6000915050610ed1565b604080516080810190915280600081526000602082018190526040820181905260609091015290565b60008083601f840112611f81578182fd5b5081356001600160401b03811115611f97578182fd5b6020830191508360208083028501011115611fb157600080fd5b9250929050565b60008083601f840112611fc9578182fd5b5081356001600160401b03811115611fdf578182fd5b602083019150836020828501011115611fb157600080fd5b80356001600160401b0381168114610ed157600080fd5b803560ff81168114610ed157600080fd5b600060208284031215612030578081fd5b813561114681612dba565b6000806040838503121561204d578081fd5b823561205881612dba565b9150602083013561206881612dba565b809150509250929050565b600080600060608486031215612087578081fd5b833561209281612dba565b92506020840135915060408401356120a981612dba565b809150509250925092565b60008060008060008060c087890312156120cc578182fd5b86356120d781612dba565b95506020870135945060408701356120ee81612dba565b935060608701356120fe81612dcf565b92506080870135915060a087013561211581612dcf565b809150509295509295509295565b60008060408385031215612135578182fd5b823561214081612dba565b915060208301356001600160401b0381111561215a578182fd5b8301601f8101851361216a578182fd5b803561217d61217882612d67565b612d41565b818152866020838501011115612191578384fd5b81602084016020830137908101602001929092525090939092509050565b600080600080604085870312156121c4578384fd5b84356001600160401b03808211156121da578586fd5b6121e688838901611f70565b909650945060208701359150808211156121fe578384fd5b5061220b87828801611f70565b95989497509550505050565b600060208284031215612228578081fd5b5035919050565b60008060408385031215612241578182fd5b82359150602083013561206881612dba565b60008060408385031215612265578182fd5b50508035926020909101359150565b600060208284031215612285578081fd5b81516001600160401b0381111561229a578182fd5b8201601f810184136122aa578182fd5b80516122b861217882612d67565b8181528560208385010111156122cc578384fd5b6122dd826020830160208601612d8a565b95945050505050565b6000806000606084860312156122fa578081fd5b83356001600160481b0381168114612092578182fd5b600060208284031215612321578081fd5b611146838361200e565b60008060008060608587031215612340578182fd5b61234a868661200e565b93506020850135925060408501356001600160401b0381111561236b578283fd5b61220b87828801611fb8565b60008060408385031215612389578182fd5b823561239481612dfa565b9150602083013561206881612de5565b6000806000606084860312156123b8578081fd5b6123c2858561200e565b92506123d18560208601611ff7565b9150604084013590509250925092565b6000806000806000608086880312156123f8578283fd5b853561240381612dfa565b9450602086013561241381612de5565b93506040860135925060608601356001600160401b03811115612434578182fd5b61244088828901611fb8565b969995985093965092949392505050565b60008060008060008060a08789031215612469578384fd5b612473888861200e565b95506124828860208901611ff7565b945060408701356001600160401b0381111561249c578485fd5b6124a889828a01611fb8565b9095509350506060870135915060808701358015158114612115578182fd5b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452612509816020860160208601612d8a565b601f01601f19169290920160200192915050565b60006bffffffffffffffffffffffff198560601b16825282846014840137910160140190815292915050565b6001600160a01b0391909116815260200190565b901515815260200190565b90815260200190565b9182526001600160a01b0316602082015260400190565b8481526001600160a01b03841660208201526060604082018190526000906125b390830184866124c7565b9695505050505050565b9485526001600160a01b039390931660208501526001600160e01b03199182166040850152606084015216608082015260a00190565b6000848252604060208301526122dd6040830184866124c7565b60006020825261114660208301846124f1565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b6020808252601e908201527f73656e646572206973206e6f742072656c61796572206f722061646d696e0000604082015260600190565b6020808252602f908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526e0818591b5a5b881d1bc819dc985b9d608a1b606082015260800190565b6020808252601590820152741c995b185e595c88185b1c9958591e481d9bdd1959605a1b604082015260600190565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b6020808252601f908201527f6164647220646f65736e277420686176652072656c6179657220726f6c652100604082015260600190565b6020808252601e908201527f76616c756520646f6573206e6f742066697420696e2031323820626974730000604082015260600190565b6020808252601d908201527f76616c756520646f6573206e6f742066697420696e2034302062697473000000604082015260600190565b6020808252601690820152751c995b185e595c9cc81b1a5b5a5d081c995858da195960521b604082015260600190565b602080825260169082015275125b98dbdc9c9958dd08199959481cdd5c1c1b1a595960521b604082015260600190565b6020808252601c908201527f50726f706f73616c2063616e6e6f742062652063616e63656c6c656400000000604082015260600190565b6020808252601c908201527f76616c756520646f6573206e6f742066697420696e2038206269747300000000604082015260600190565b6020808252818101527f7265736f757263654944206e6f74206d617070656420746f2068616e646c6572604082015260600190565b6020808252601e908201527f76616c756520646f6573206e6f742066697420696e2032303020626974730000604082015260600190565b60208082526030908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526f2061646d696e20746f207265766f6b6560801b606082015260800190565b6020808252818101527f50726f706f73616c206d75737420686176652050617373656420737461747573604082015260600190565b6020808252818101527f50726f706f73616c206e6f7420617420657870697279207468726573686f6c64604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b60208082526026908201527f446f6573206e6f7420616c6c6f772064656372656d656e7473206f6620746865604082015265206e6f6e636560d01b606082015260800190565b6020808252601e908201527f6164647220616c7265616479206861732072656c6179657220726f6c65210000604082015260600190565b60208082526017908201527f43616e6e6f742072656e6f756e6365206f6e6573656c66000000000000000000604082015260600190565b6020808252818101527f73656e64657220646f65736e277420686176652072656c6179657220726f6c65604082015260600190565b6020808252601e908201527f73656e64657220646f65736e277420686176652061646d696e20726f6c650000604082015260600190565b6020808252601f908201527f43757272656e742066656520697320657175616c20746f206e65772066656500604082015260600190565b60208082526019908201527f6e6f2068616e646c657220666f72207265736f75726365494400000000000000604082015260600190565b60208082526023908201527f70726f706f73616c20616c72656164792065786563757465642f63616e63656c6040820152621b195960ea1b606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560408201526e103937b632b9903337b91039b2b63360891b606082015260800190565b8151608082019060058110612c3957fe5b82526020838101516001600160c81b03169083015260408084015160ff169083015260609283015164ffffffffff16929091019190915290565b6001600160801b0391909116815260200190565b64ffffffffff91909116815260200190565b6001600160401b0391909116815260200190565b60ff91909116815260200190565b600060ff881682528660208301526001600160401b038616604083015260a06060830152612ced60a0830185876124c7565b8281036080840152612cff81856124f1565b9998505050505050505050565b60ff851681526001600160401b03841660208201526080810160058410612d2f57fe5b60408201939093526060015292915050565b6040518181016001600160401b0381118282101715612d5f57600080fd5b604052919050565b60006001600160401b03821115612d7c578081fd5b50601f01601f191660200190565b60005b83811015612da5578181015183820152602001612d8d565b83811115612db4576000848401525b50505050565b6001600160a01b0381168114610fdb57600080fd5b6001600160e01b031981168114610fdb57600080fd5b6001600160401b0381168114610fdb57600080fd5b60ff81168114610fdb57600080fdfe968626a768e76ba1363efe44e322a6c4900c5f084e0b45f35e294dfddaa9e0d5e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4a264697066735822122082ad76827d98d4068f1623241361f4bd0fd6311c59f11aad4c0afd1db434351264736f6c634300060c0033",
  "deployedBytecode": "0x6080604052600436106102305760003560e01c80639010d07c1161012e578063c0331b3e116100ab578063cdb0f73a1161006f578063cdb0f73a14610678578063d547741f14610698578063d7a9cd79146106b8578063edc20c3c146106cd578063ffaac0eb146106ed57610230565b8063c0331b3e146105d4578063c5b37c22146105f4578063c5ec897014610616578063ca15c87314610638578063cb10f2151461065857610230565b80639dd694f4116100f25780639dd694f41461053b5780639debb3bd1461055d578063a217fddf14610572578063a9cf69fa14610587578063bd2a1820146105b457610230565b80639010d07c146104a657806391c404ac146104c657806391d14854146104e6578063926d7d7f146105065780639d82dd631461051b57610230565b80634e0df3f6116101bc5780637febe63f116101805780637febe63f1461040f578063802aabe81461042f57806380ae1c281461044457806384db809f146104595780638c0c26311461048657610230565b80634e0df3f61461036d578063541d55481461038d5780635a1ad87c146103ba5780635c975abb146103da5780635e1fab0f146103ef57610230565b80632f2ff15d116102035780632f2ff15d146102c057806336568abe146102e05780634603ae38146103005780634b0b919d146103205780634e0560051461034d57610230565b806305e2ca171461023557806317f03ce51461024a578063206a98fd1461026a578063248a9ca31461028a575b600080fd5b61024861024336600461232b565b610702565b005b34801561025657600080fd5b506102486102653660046123a4565b610892565b34801561027657600080fd5b50610248610285366004612451565b610aae565b34801561029657600080fd5b506102aa6102a5366004612217565b610cfe565b6040516102b79190612568565b60405180910390f35b3480156102cc57600080fd5b506102486102db36600461222f565b610d13565b3480156102ec57600080fd5b506102486102fb36600461222f565b610d5b565b34801561030c57600080fd5b5061024861031b3660046121af565b610d9d565b34801561032c57600080fd5b5061034061033b366004612310565b610e2b565b6040516102b79190612c99565b34801561035957600080fd5b50610248610368366004612217565b610e46565b34801561037957600080fd5b506102aa61038836600461222f565b610eab565b34801561039957600080fd5b506103ad6103a836600461201f565b610ed7565b6040516102b7919061255d565b3480156103c657600080fd5b506102486103d53660046120b4565b610ef1565b3480156103e657600080fd5b506103ad610f8b565b3480156103fb57600080fd5b5061024861040a36600461201f565b610f94565b34801561041b57600080fd5b506103ad61042a3660046122e6565b610fde565b34801561043b57600080fd5b506102aa611076565b34801561045057600080fd5b50610248611094565b34801561046557600080fd5b50610479610474366004612217565b6110a6565b6040516102b79190612549565b34801561049257600080fd5b506102486104a136600461203b565b6110c1565b3480156104b257600080fd5b506104796104c1366004612253565b61112e565b3480156104d257600080fd5b506102486104e1366004612217565b61114d565b3480156104f257600080fd5b506103ad61050136600461222f565b6111b7565b34801561051257600080fd5b506102aa6111cf565b34801561052757600080fd5b5061024861053636600461201f565b6111e1565b34801561054757600080fd5b5061055061125c565b6040516102b79190612cad565b34801561056957600080fd5b506102aa611265565b34801561057e57600080fd5b506102aa61126a565b34801561059357600080fd5b506105a76105a23660046123a4565b61126f565b6040516102b79190612c28565b3480156105c057600080fd5b506102486105cf366004612123565b61131e565b3480156105e057600080fd5b506102486105ef3660046123e1565b611354565b34801561060057600080fd5b50610609611797565b6040516102b79190612c73565b34801561062257600080fd5b5061062b6117ac565b6040516102b79190612c87565b34801561064457600080fd5b506102aa610653366004612217565b6117c0565b34801561066457600080fd5b50610248610673366004612073565b6117d7565b34801561068457600080fd5b5061024861069336600461201f565b611868565b3480156106a457600080fd5b506102486106b336600461222f565b61190b565b3480156106c457600080fd5b50610550611945565b3480156106d957600080fd5b506102486106e8366004612377565b611953565b3480156106f957600080fd5b506102486119cd565b61070a611a7a565b6002546201000090046001600160801b031634146107435760405162461bcd60e51b815260040161073a9061281a565b60405180910390fd5b6000838152600460205260409020546001600160a01b0316806107785760405162461bcd60e51b815260040161073a906128b8565b60ff851660009081526003602052604090819020805467ffffffffffffffff19811660016001600160401b039283160191821617909155905163b07e54bb60e01b815282906060906001600160a01b0383169063b07e54bb906107e5908a9033908b908b90600401612588565b600060405180830381600087803b1580156107ff57600080fd5b505af1158015610813573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405261083b9190810190612274565b9050336001600160a01b03167f17bc3181e17a9620a479c24e6c606e474ba84fc036877b768926872e8cd0e11f8989868a8a8760405161088096959493929190612cbb565b60405180910390a25050505050505050565b61089a611a9d565b68ffffffffffffffff00600883901b1660ff8416176108b7611f47565b6001600160481b0382166000908152600560209081526040808320868452909152908190208151608081019092528054829060ff1660048111156108f757fe5b600481111561090257fe5b8152905461010081046001600160c81b03166020830152600160d01b810460ff166040830152600160d81b900464ffffffffff166060909101528051909150600181600481111561094f57fe5b14806109665750600281600481111561096457fe5b145b6109825760405162461bcd60e51b815260040161073a9061284a565b600254606083015164ffffffffff600160901b9092048216916109a791439116611ae2565b64ffffffffff16116109cb5760405162461bcd60e51b815260040161073a906129a9565b60048083526001600160481b03841660009081526005602090815260408083208884529091529020835181548593839160ff1916906001908490811115610a0e57fe5b02179055506020820151815460408085015160609095015164ffffffffff16600160d81b026001600160d81b0360ff909616600160d01b0260ff60d01b196001600160c81b0390951661010002610100600160d01b03199094169390931793909316919091179390931617905551600080516020612e0a83398151915290610a9e90889088906004908990612d0c565b60405180910390a1505050505050565b610ab6611b24565b610abe611a7a565b60008281526004602090815260408083205490516001600160a01b039091169268ffffffffffffffff0060088a901b1660ff8b1617929091610b069185918a918a910161251d565b60408051601f1981840301815291815281516020928301206001600160481b03851660009081526005845282812082825290935291209091506002815460ff166004811115610b5157fe5b14610b6e5760405162461bcd60e51b815260040161073a90612974565b805460ff19166003178155838515610be75760405163712467f960e11b81526001600160a01b0382169063e248cff290610bb0908a908d908d906004016125f3565b600060405180830381600087803b158015610bca57600080fd5b505af1158015610bde573d6000803e3d6000fd5b50505050610cc4565b60405163712467f960e11b81526001600160a01b0382169063e248cff290610c17908a908d908d906004016125f3565b600060405180830381600087803b158015610c3157600080fd5b505af1925050508015610c42575060015b610cc4573d808015610c70576040519150601f19603f3d011682016040523d82523d6000602084013e610c75565b606091505b50825460ff191660021783556040517fbd37c1f0d53bb2f33fe4c2104de272fcdeb4d2fef3acdbf1e4ddc3d6833ca37690610cb190839061260d565b60405180910390a1505050505050610cf6565b600080516020612e0a8339815191528b8b600386604051610ce89493929190612d0c565b60405180910390a150505050505b505050505050565b60009081526001602052604090206002015490565b600082815260016020526040902060020154610d3190610501611b58565b610d4d5760405162461bcd60e51b815260040161073a90612699565b610d578282611b5c565b5050565b610d63611b58565b6001600160a01b0316816001600160a01b031614610d935760405162461bcd60e51b815260040161073a90612bd9565b610d578282611bc5565b610da5611c2e565b60005b83811015610e2457848482818110610dbc57fe5b9050602002016020810190610dd1919061201f565b6001600160a01b03166108fc848484818110610de957fe5b905060200201359081150290604051600060405180830381858888f19350505050158015610e1b573d6000803e3d6000fd5b50600101610da8565b5050505050565b6003602052600090815260409020546001600160401b031681565b610e4e611c2e565b610e57816119dd565b600260016101000a81548160ff021916908360ff1602179055507fa20d6b84cd798a24038be305eff8a45ca82ef54a2aa2082005d8e14c0a4746c881604051610ea09190612568565b60405180910390a150565b60008281526001602081815260408084206001600160a01b038616855290920190529020545b92915050565b6000610ed1600080516020612e2a833981519152836111b7565b610ef9611c2e565b60008581526004602081905260409182902080546001600160a01b0319166001600160a01b038a16908117909155915163de319d9960e01b815288929163de319d9991610f50918a918a918a918a918a91016125bd565b600060405180830381600087803b158015610f6a57600080fd5b505af1158015610f7e573d6000803e3d6000fd5b5050505050505050505050565b60005460ff1690565b610f9c611c2e565b336001600160a01b0382161415610fc55760405162461bcd60e51b815260040161073a90612a85565b610fd0600082610d13565b610fdb600033610d5b565b50565b6001600160481b0383166000908152600560209081526040808320858452909152808220815160808101909252805461106e929190829060ff16600481111561102357fe5b600481111561102e57fe5b8152905461010081046001600160c81b03166020830152600160d01b810460ff166040830152600160d81b900464ffffffffff1660609091015283611c55565b949350505050565b600061108f600080516020612e2a8339815191526117c0565b905090565b61109c611c2e565b6110a4611c78565b565b6004602052600090815260409020546001600160a01b031681565b6110c9611c2e565b6040516307b7ed9960e01b815282906001600160a01b038216906307b7ed99906110f7908590600401612549565b600060405180830381600087803b15801561111157600080fd5b505af1158015611125573d6000803e3d6000fd5b50505050505050565b60008281526001602052604081206111469083611cc7565b9392505050565b611155611c2e565b6002546201000090046001600160801b03168114156111865760405162461bcd60e51b815260040161073a90612b28565b61118f81611a04565b6002806101000a8154816001600160801b0302191690836001600160801b0316021790555050565b60008281526001602052604081206111469083611a65565b600080516020612e2a83398151915281565b6111f9600080516020612e2a833981519152826111b7565b6112155760405162461bcd60e51b815260040161073a90612745565b61122d600080516020612e2a8339815191528261190b565b7f10e1f7ce9fd7d1b90a66d13a2ab3cb8dd7f29f3f8d520b143b063ccfbab6906b81604051610ea09190612549565b60025460ff1681565b60c881565b600081565b611277611f47565b6001600160481b0360ff858116600886901b68ffffffffffffffff00161791821660009081526005602090815260408083208784529091529081902081516080810190925280549192909183911660048111156112d057fe5b60048111156112db57fe5b8152905461010081046001600160c81b03166020830152600160d01b810460ff166040830152600160d81b900464ffffffffff1660609091015295945050505050565b611326611c2e565b60405163025a3c9960e21b815282906001600160a01b03821690630968f264906110f790859060040161260d565b61135c611b24565b611364611a7a565b60008381526004602090815260408083205490516001600160a01b039091169268ffffffffffffffff00600889901b1660ff8a16179290916113ac918591889188910161251d565b6040516020818303038152906040528051906020012090506113cc611f47565b6001600160481b0383166000908152600560209081526040808320858452909152908190208151608081019092528054829060ff16600481111561140c57fe5b600481111561141757fe5b8152905461010081046001600160c81b0316602080840191909152600160d01b820460ff16604080850191909152600160d81b90920464ffffffffff1660609093019290925260008a815260049092529020549091506001600160a01b03166114925760405162461bcd60e51b815260040161073a90612b5f565b6002815160048111156114a157fe5b14156114bf576114b6898988888b6001610aae565b50505050610e24565b805160019060048111156114cf57fe5b11156114ed5760405162461bcd60e51b815260040161073a90612b96565b6114f78133611c55565b156115145760405162461bcd60e51b815260040161073a906126e8565b60008151600481111561152357fe5b141561158457506040805160808101825260018082526000602083018190528284015264ffffffffff4316606083015291519091600080516020612e0a83398151915291611577918c918c91908790612d0c565b60405180910390a16115e6565b600254606082015164ffffffffff600160901b9092048216916115a991439116611ae2565b64ffffffffff1611156115e6576004808252604051600080516020612e0a833981519152916115dd918c918c918790612d0c565b60405180910390a15b6004815160048111156115f557fe5b146116bd5761161a61160633611cd3565b82602001516001600160c81b031617611d01565b6001600160c81b031660208201526040808201805160010160ff169052815190517f25f8daaa4635a7729927ba3f5b3d59cc3320aca7c32c9db4e7ca7b95743436409161166c918c918c918790612d0c565b60405180910390a1600254604082015160ff61010090920482169116106116bd576002808252604051600080516020612e0a833981519152916116b4918c918c918790612d0c565b60405180910390a15b6001600160481b038316600090815260056020908152604080832085845290915290208151815483929190829060ff191660018360048111156116fc57fe5b021790555060208201518154604084015160609094015164ffffffffff16600160d81b026001600160d81b0360ff909516600160d01b0260ff60d01b196001600160c81b0390941661010002610100600160d01b03199093169290921792909216179290921691909117905560028151600481111561177757fe5b141561178c5761178c898988888b6000610aae565b505050505050505050565b6002546201000090046001600160801b031681565b600254600160901b900464ffffffffff1681565b6000818152600160205260408120610ed190611d26565b6117df611c2e565b60008281526004602081905260409182902080546001600160a01b0319166001600160a01b0387169081179091559151635c7d1b9b60e11b815285929163b8fa373691611830918791879101612571565b600060405180830381600087803b15801561184a57600080fd5b505af115801561185e573d6000803e3d6000fd5b5050505050505050565b611880600080516020612e2a833981519152826111b7565b1561189d5760405162461bcd60e51b815260040161073a90612a4e565b60c86118a7611076565b106118c45760405162461bcd60e51b815260040161073a906127ea565b6118dc600080516020612e2a83398151915282610d13565b7f03580ee9f53a62b7cb409a2cb56f9be87747dd15017afc5cef6eef321e4fb2c581604051610ea09190612549565b60008281526001602052604090206002015461192990610501611b58565b610d935760405162461bcd60e51b815260040161073a90612924565b600254610100900460ff1681565b61195b611c2e565b60ff82166000908152600360205260409020546001600160401b03908116908216116119995760405162461bcd60e51b815260040161073a90612a08565b60ff919091166000908152600360205260409020805467ffffffffffffffff19166001600160401b03909216919091179055565b6119d5611c2e565b6110a4611d31565b60006101008210611a005760405162461bcd60e51b815260040161073a90612881565b5090565b6000600160801b8210611a005760405162461bcd60e51b815260040161073a9061277c565b6000650100000000008210611a005760405162461bcd60e51b815260040161073a906127b3565b6000611146836001600160a01b038416611d73565b6000611146836001600160a01b038416611dbd565b60005460ff16156110a45760405162461bcd60e51b815260040161073a906129de565b611aa86000336111b7565b80611ac65750611ac6600080516020612e2a833981519152336111b7565b6110a45760405162461bcd60e51b815260040161073a90612662565b600061114683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611dd5565b611b3c600080516020612e2a833981519152336111b7565b6110a45760405162461bcd60e51b815260040161073a90612abc565b3390565b6000828152600160205260409020611b749082611a50565b15610d5757611b81611b58565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b6000828152600160205260409020611bdd9082611e01565b15610d5757611bea611b58565b6001600160a01b0316816001600160a01b0316837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b611c396000336111b7565b6110a45760405162461bcd60e51b815260040161073a90612af1565b60008083602001516001600160c81b0316611c6f84611cd3565b16119392505050565b611c80611a7a565b6000805460ff191660011790556040517f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25890611cbd903390612549565b60405180910390a1565b60006111468383611e16565b6000611cf7611cf0600080516020612e2a83398151915284610eab565b6001611ae2565b6001901b92915050565b6000600160c81b8210611a005760405162461bcd60e51b815260040161073a906128ed565b6000610ed182611e5b565b611d39611e5f565b6000805460ff191690556040517f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa90611cbd903390612549565b6000611d7f8383611dbd565b611db557508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610ed1565b506000610ed1565b60009081526001919091016020526040902054151590565b60008184841115611df95760405162461bcd60e51b815260040161073a919061260d565b505050900390565b6000611146836001600160a01b038416611e81565b81546000908210611e395760405162461bcd60e51b815260040161073a90612620565b826000018281548110611e4857fe5b9060005260206000200154905092915050565b5490565b60005460ff166110a45760405162461bcd60e51b815260040161073a90612717565b60008181526001830160205260408120548015611f3d5783546000198083019190810190600090879083908110611eb457fe5b9060005260206000200154905080876000018481548110611ed157fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611f0157fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610ed1565b6000915050610ed1565b604080516080810190915280600081526000602082018190526040820181905260609091015290565b60008083601f840112611f81578182fd5b5081356001600160401b03811115611f97578182fd5b6020830191508360208083028501011115611fb157600080fd5b9250929050565b60008083601f840112611fc9578182fd5b5081356001600160401b03811115611fdf578182fd5b602083019150836020828501011115611fb157600080fd5b80356001600160401b0381168114610ed157600080fd5b803560ff81168114610ed157600080fd5b600060208284031215612030578081fd5b813561114681612dba565b6000806040838503121561204d578081fd5b823561205881612dba565b9150602083013561206881612dba565b809150509250929050565b600080600060608486031215612087578081fd5b833561209281612dba565b92506020840135915060408401356120a981612dba565b809150509250925092565b60008060008060008060c087890312156120cc578182fd5b86356120d781612dba565b95506020870135945060408701356120ee81612dba565b935060608701356120fe81612dcf565b92506080870135915060a087013561211581612dcf565b809150509295509295509295565b60008060408385031215612135578182fd5b823561214081612dba565b915060208301356001600160401b0381111561215a578182fd5b8301601f8101851361216a578182fd5b803561217d61217882612d67565b612d41565b818152866020838501011115612191578384fd5b81602084016020830137908101602001929092525090939092509050565b600080600080604085870312156121c4578384fd5b84356001600160401b03808211156121da578586fd5b6121e688838901611f70565b909650945060208701359150808211156121fe578384fd5b5061220b87828801611f70565b95989497509550505050565b600060208284031215612228578081fd5b5035919050565b60008060408385031215612241578182fd5b82359150602083013561206881612dba565b60008060408385031215612265578182fd5b50508035926020909101359150565b600060208284031215612285578081fd5b81516001600160401b0381111561229a578182fd5b8201601f810184136122aa578182fd5b80516122b861217882612d67565b8181528560208385010111156122cc578384fd5b6122dd826020830160208601612d8a565b95945050505050565b6000806000606084860312156122fa578081fd5b83356001600160481b0381168114612092578182fd5b600060208284031215612321578081fd5b611146838361200e565b60008060008060608587031215612340578182fd5b61234a868661200e565b93506020850135925060408501356001600160401b0381111561236b578283fd5b61220b87828801611fb8565b60008060408385031215612389578182fd5b823561239481612dfa565b9150602083013561206881612de5565b6000806000606084860312156123b8578081fd5b6123c2858561200e565b92506123d18560208601611ff7565b9150604084013590509250925092565b6000806000806000608086880312156123f8578283fd5b853561240381612dfa565b9450602086013561241381612de5565b93506040860135925060608601356001600160401b03811115612434578182fd5b61244088828901611fb8565b969995985093965092949392505050565b60008060008060008060a08789031215612469578384fd5b612473888861200e565b95506124828860208901611ff7565b945060408701356001600160401b0381111561249c578485fd5b6124a889828a01611fb8565b9095509350506060870135915060808701358015158114612115578182fd5b60008284528282602086013780602084860101526020601f19601f85011685010190509392505050565b60008151808452612509816020860160208601612d8a565b601f01601f19169290920160200192915050565b60006bffffffffffffffffffffffff198560601b16825282846014840137910160140190815292915050565b6001600160a01b0391909116815260200190565b901515815260200190565b90815260200190565b9182526001600160a01b0316602082015260400190565b8481526001600160a01b03841660208201526060604082018190526000906125b390830184866124c7565b9695505050505050565b9485526001600160a01b039390931660208501526001600160e01b03199182166040850152606084015216608082015260a00190565b6000848252604060208301526122dd6040830184866124c7565b60006020825261114660208301846124f1565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e604082015261647360f01b606082015260800190565b6020808252601e908201527f73656e646572206973206e6f742072656c61796572206f722061646d696e0000604082015260600190565b6020808252602f908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526e0818591b5a5b881d1bc819dc985b9d608a1b606082015260800190565b6020808252601590820152741c995b185e595c88185b1c9958591e481d9bdd1959605a1b604082015260600190565b60208082526014908201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604082015260600190565b6020808252601f908201527f6164647220646f65736e277420686176652072656c6179657220726f6c652100604082015260600190565b6020808252601e908201527f76616c756520646f6573206e6f742066697420696e2031323820626974730000604082015260600190565b6020808252601d908201527f76616c756520646f6573206e6f742066697420696e2034302062697473000000604082015260600190565b6020808252601690820152751c995b185e595c9cc81b1a5b5a5d081c995858da195960521b604082015260600190565b602080825260169082015275125b98dbdc9c9958dd08199959481cdd5c1c1b1a595960521b604082015260600190565b6020808252601c908201527f50726f706f73616c2063616e6e6f742062652063616e63656c6c656400000000604082015260600190565b6020808252601c908201527f76616c756520646f6573206e6f742066697420696e2038206269747300000000604082015260600190565b6020808252818101527f7265736f757263654944206e6f74206d617070656420746f2068616e646c6572604082015260600190565b6020808252601e908201527f76616c756520646f6573206e6f742066697420696e2032303020626974730000604082015260600190565b60208082526030908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201526f2061646d696e20746f207265766f6b6560801b606082015260800190565b6020808252818101527f50726f706f73616c206d75737420686176652050617373656420737461747573604082015260600190565b6020808252818101527f50726f706f73616c206e6f7420617420657870697279207468726573686f6c64604082015260600190565b60208082526010908201526f14185d5cd8589b194e881c185d5cd95960821b604082015260600190565b60208082526026908201527f446f6573206e6f7420616c6c6f772064656372656d656e7473206f6620746865604082015265206e6f6e636560d01b606082015260800190565b6020808252601e908201527f6164647220616c7265616479206861732072656c6179657220726f6c65210000604082015260600190565b60208082526017908201527f43616e6e6f742072656e6f756e6365206f6e6573656c66000000000000000000604082015260600190565b6020808252818101527f73656e64657220646f65736e277420686176652072656c6179657220726f6c65604082015260600190565b6020808252601e908201527f73656e64657220646f65736e277420686176652061646d696e20726f6c650000604082015260600190565b6020808252601f908201527f43757272656e742066656520697320657175616c20746f206e65772066656500604082015260600190565b60208082526019908201527f6e6f2068616e646c657220666f72207265736f75726365494400000000000000604082015260600190565b60208082526023908201527f70726f706f73616c20616c72656164792065786563757465642f63616e63656c6040820152621b195960ea1b606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560408201526e103937b632b9903337b91039b2b63360891b606082015260800190565b8151608082019060058110612c3957fe5b82526020838101516001600160c81b03169083015260408084015160ff169083015260609283015164ffffffffff16929091019190915290565b6001600160801b0391909116815260200190565b64ffffffffff91909116815260200190565b6001600160401b0391909116815260200190565b60ff91909116815260200190565b600060ff881682528660208301526001600160401b038616604083015260a06060830152612ced60a0830185876124c7565b8281036080840152612cff81856124f1565b9998505050505050505050565b60ff851681526001600160401b03841660208201526080810160058410612d2f57fe5b60408201939093526060015292915050565b6040518181016001600160401b0381118282101715612d5f57600080fd5b604052919050565b60006001600160401b03821115612d7c578081fd5b50601f01601f191660200190565b60005b83811015612da5578181015183820152602001612d8d565b83811115612db4576000848401525b50505050565b6001600160a01b0381168114610fdb57600080fd5b6001600160e01b031981168114610fdb57600080fd5b6001600160401b0381168114610fdb57600080fd5b60ff81168114610fdb57600080fdfe968626a768e76ba1363efe44e322a6c4900c5f084e0b45f35e294dfddaa9e0d5e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4a264697066735822122082ad76827d98d4068f1623241361f4bd0fd6311c59f11aad4c0afd1db434351264736f6c634300060c0033",
  "immutableReferences": {},
  "sourceMap": "494:20600:34:-:0;;;3729:481;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;782:5:54;772:15;;-1:-1:-1;;772:15:54;;;;;;3871:9:34;:20;;;;;772:15:54;3871:20:34;;;;;3921:33;:23;:31;;;;;;;:33;;:::i;:::-;3901:17;;:53;;;;;;;;;;;;;;;;;;3971:15;:3;:13;;;;;:15;;:::i;:::-;3964:4;;:22;;;;;-1:-1:-1;;;;;3964:22:34;;;;;-1:-1:-1;;;;;3964:22:34;;;;;;4006:17;:6;:15;;;;;:17;;:::i;:::-;3996:7;:27;;;;;;;-1:-1:-1;;;3996:27:34;-1:-1:-1;;;;3996:27:34;;;;;;;;;4034:42;-1:-1:-1;4065:10:34;4034;:42::i;:::-;4092:9;4087:117;4107:15;:22;4103:1;:26;4087:117;;;4150:43;2222:25;4174:15;4190:1;4174:18;;;;;;;;;;;;;;4150:9;;;:43;;:::i;:::-;4131:3;;4087:117;;;;3729:481;;;;;494:20600;;608:161:55;663:5;696:4;688:5;:12;680:53;;;;-1:-1:-1;;;680:53:55;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;756:5:55;608:161::o;259:171::-;316:7;-1:-1:-1;;;343:5:55;:14;335:57;;;;-1:-1:-1;;;335:57:55;;;;;;;:::i;436:166::-;492:6;526:5;518;:13;510:55;;;;-1:-1:-1;;;510:55:55;;;;;;;:::i;6708:110:53:-;6786:25;6797:4;6803:7;6786:10;:25::i;:::-;6708:110;;:::o;4764:223::-;4855:12;;;;:6;:12;;;;;:22;;;4847:45;;4879:12;:10;:12::i;:::-;4847:7;:45::i;:::-;4839:105;;;;-1:-1:-1;;;4839:105:53;;;;;;;:::i;7025:184::-;7098:12;;;;:6;:12;;;;;;;;:33;;7123:7;;7098:24;;;;;:33;;:::i;:::-;7094:109;;;7179:12;:10;:12::i;:::-;-1:-1:-1;;;;;7152:40:53;7170:7;-1:-1:-1;;;;;7152:40:53;7164:4;7152:40;;;;;;;;;;7025:184;;:::o;598:104:28:-;685:10;598:104;:::o;2809:137:53:-;2878:4;2901:12;;;:6;:12;;;;;;;:38;;2931:7;;2901:29;;;;;:38;;:::i;:::-;2894:45;;2809:137;;;;;:::o;6429:150:31:-;6499:4;6522:50;6527:3;-1:-1:-1;;;;;6547:23:31;;6522:4;:50::i;6984:165::-;7064:4;7087:55;7097:3;-1:-1:-1;;;;;7117:23:31;;7087:9;:55::i;1640:404::-;1703:4;1724:21;1734:3;1739:5;1724:9;:21::i;:::-;1719:319;;-1:-1:-1;1761:23:31;;;;;;;;:11;:23;;;;;;;;;;;;;1941:18;;1919:19;;;:12;;;:19;;;;;;:40;;;;1973:11;;1719:319;-1:-1:-1;2022:5:31;2015:12;;3805:127;3878:4;3901:19;;;:12;;;;;:19;;;;;;:24;;;3805:127::o;5:134:-1:-;83:13;;-1:-1;;;;;6118:54;;6410:35;;6400:2;;6459:1;;6449:12;1172:934;;;;;;1378:3;1366:9;1357:7;1353:23;1349:33;1346:2;;;-1:-1;;1385:12;1346:2;1117:6;1111:13;1129:31;1154:5;1129:31;:::i;:::-;1567:2;1552:18;;;1546:25;1437:72;;-1:-1;1567:2;-1:-1;;;;;1580:30;;1577:2;;;-1:-1;;1613:12;1577:2;1700:22;;285:4;273:17;;269:27;-1:-1;259:2;;-1:-1;;300:12;259:2;340:6;334:13;362:80;377:64;434:6;377:64;:::i;:::-;362:80;:::i;:::-;470:21;;;527:14;;;;502:17;;;616;;;607:27;;;;604:36;-1:-1;601:2;;;-1:-1;;643:12;601:2;-1:-1;669:10;;663:217;688:6;685:1;682:13;663:217;;;768:48;812:3;800:10;768:48;:::i;:::-;756:61;;710:1;703:9;;;;;831:14;;;;859;;663:217;;;-1:-1;1769:2;1819:22;;972:13;1888:2;1938:22;;972:13;2007:3;2058:22;;;972:13;1340:766;;1633:99;;-1:-1;972:13;;;-1:-1;1340:766;-1:-1;;;;;;;1340:766::o;3520:416::-;3720:2;3734:47;;;2338:2;3705:18;;;5890:19;2374:34;5930:14;;;2354:55;-1:-1;;;2429:12;;;2422:39;2480:12;;;3691:245::o;3943:416::-;4143:2;4157:47;;;2731:2;4128:18;;;5890:19;2767:32;5930:14;;;2747:53;2819:12;;;4114:245::o;4366:416::-;4566:2;4580:47;;;3070:2;4551:18;;;5890:19;3106:31;5930:14;;;3086:52;3157:12;;;4537:245::o;4789:416::-;4989:2;5003:47;;;3408:2;4974:18;;;5890:19;3444:30;5930:14;;;3424:51;3494:12;;;4960:245::o;5212:256::-;5274:2;5268:9;5300:17;;;-1:-1;;;;;5360:34;;5396:22;;;5357:62;5354:2;;;5432:1;;5422:12;5354:2;5274;5441:22;5252:216;;-1:-1;5252:216::o;5475:304::-;;-1:-1;;;;;5623:30;;5620:2;;;-1:-1;;5656:12;5620:2;-1:-1;5701:4;5689:17;;;5754:15;;5557:222::o;6599:113::-;6334:4;6682:5;6323:16;6659:5;6656:33;6646:2;;6703:1;;6693:12;6646:2;6640:72;:::o;:::-;494:20600:34;;;;;;",
  "deployedSourceMap": "494:20600:34:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13386:665;;;;;;:::i;:::-;;:::i;:::-;;17707:769;;;;;;;;;;-1:-1:-1;17707:769:34;;;;;:::i;:::-;;:::i;19338:1150::-;;;;;;;;;;-1:-1:-1;19338:1150:34;;;;;:::i;:::-;;:::i;4402:112:53:-;;;;;;;;;;-1:-1:-1;4402:112:53;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4764:223;;;;;;;;;;-1:-1:-1;4764:223:53;;;;;:::i;:::-;;:::i;5938:205::-;;;;;;;;;;-1:-1:-1;5938:205:53;;;;;:::i;:::-;;:::i;20878:214:34:-;;;;;;;;;;-1:-1:-1;20878:214:34;;;;;:::i;:::-;;:::i;1163:46::-;;;;;;;;;;-1:-1:-1;1163:46:34;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;6365:189::-;;;;;;;;;;-1:-1:-1;6365:189:34;;;;;:::i;:::-;;:::i;4045:176:53:-;;;;;;;;;;-1:-1:-1;4045:176:53;;;;;:::i;:::-;;:::i;4901:119:34:-;;;;;;;;;;-1:-1:-1;4901:119:34;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;9153:539::-;;;;;;;;;;-1:-1:-1;9153:539:34;;;;;:::i;:::-;;:::i;889:76:54:-;;;;;;;;;;;;;:::i;5271:238:34:-;;;;;;;;;;-1:-1:-1;5271:238:34;;;;;:::i;:::-;;:::i;4591:183::-;;;;;;;;;;-1:-1:-1;4591:183:34;;;;;:::i;:::-;;:::i;11731:123::-;;;;;;;;;;;;;:::i;5697:75::-;;;;;;;;;;;;;:::i;1252:62::-;;;;;;;;;;-1:-1:-1;1252:62:34;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;10083:200::-;;;;;;;;;;-1:-1:-1;10083:200:34;;;;;:::i;:::-;;:::i;3824:136:53:-;;;;;;;;;;-1:-1:-1;3824:136:53;;;;;:::i;:::-;;:::i;12008:169:34:-;;;;;;;;;;-1:-1:-1;12008:169:34;;;;;:::i;:::-;;:::i;2809:137:53:-;;;;;;;;;;-1:-1:-1;2809:137:53;;;;;:::i;:::-;;:::i;2183:64:34:-;;;;;;;;;;;;;:::i;7512:254::-;;;;;;;;;;-1:-1:-1;7512:254:34;;;;;:::i;:::-;;:::i;702:24::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;653:42::-;;;;;;;;;;;;;:::i;1999:49:53:-;;;;;;;;;;;;;:::i;11351:260:34:-;;;;;;;;;;-1:-1:-1;11351:260:34;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;12415:205::-;;;;;;;;;;-1:-1:-1;12415:205:34;;;;;:::i;:::-;;:::i;14715:2479::-;;;;;;;;;;-1:-1:-1;14715:2479:34;;;;;:::i;:::-;;:::i;770:19::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;795:22::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;3114:125:53:-;;;;;;;;;;-1:-1:-1;3114:125:53;;;;;:::i;:::-;;:::i;8307:298:34:-;;;;;;;;;;-1:-1:-1;8307:298:34;;;;;:::i;:::-;;:::i;6868:324::-;;;;;;;;;;-1:-1:-1;6868:324:34;;;;;:::i;:::-;;:::i;5221:226:53:-;;;;;;;;;;-1:-1:-1;5221:226:53;;;;;:::i;:::-;;:::i;732:32:34:-;;;;;;;;;;;;;:::i;10546:221::-;;;;;;;;;;-1:-1:-1;10546:221:34;;;;;:::i;:::-;;:::i;5962:79::-;;;;;;;;;;;;;:::i;13386:665::-;1186:16:54;:14;:16::i;:::-;13533:4:34::1;::::0;;;::::1;-1:-1:-1::0;;;;;13533:4:34::1;13520:9;:17;13512:52;;;;-1:-1:-1::0;;;13512:52:34::1;;;;;;;:::i;:::-;;;;;;;;;13575:15;13593:39:::0;;;:27:::1;:39;::::0;;;;;-1:-1:-1;;;;;13593:39:34::1;13650:21:::0;13642:66:::1;;;;-1:-1:-1::0;;;13642:66:34::1;;;;;;;:::i;:::-;13743:35;::::0;::::1;13719:19;13743:35:::0;;;:14:::1;:35;::::0;;;;;;13741:37;;-1:-1:-1;;13741:37:34;::::1;::::0;-1:-1:-1;;;;;13741:37:34;;::::1;;::::0;;::::1;;::::0;;;13887:52;;-1:-1:-1;;;13887:52:34;;13838:7;;13856:28:::1;::::0;-1:-1:-1;;;;;13887:22:34;::::1;::::0;::::1;::::0;:52:::1;::::0;13910:10;;13922::::1;::::0;13934:4;;;;13887:52:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;::::0;;::::1;-1:-1:-1::0;;13887:52:34::1;::::0;::::1;;::::0;::::1;::::0;;;::::1;::::0;::::1;:::i;:::-;13856:83;;14010:10;-1:-1:-1::0;;;;;13955:89:34::1;;13963:19;13984:10;13996:12;14022:4;;14028:15;13955:89;;;;;;;;;;;:::i;:::-;;;;;;;;1212:1:54;;;;13386:665:34::0;;;;:::o;17707:769::-;2361:21;:19;:21::i;:::-;17843:25;17867:1:::1;17843:25:::0;;;;17872:16:::1;::::0;::::1;17842:46;17898:24;;:::i;:::-;-1:-1:-1::0;;;;;17925:22:34;::::1;;::::0;;;:10:::1;:22;::::0;;;;;;;:32;;;;;;;;;;17898:59;;::::1;::::0;::::1;::::0;;;;;;;::::1;;;::::0;::::1;;;;;;;;;;;;;;::::0;;;;::::1;::::0;::::1;-1:-1:-1::0;;;;;17898:59:34::1;;::::0;::::1;::::0;-1:-1:-1;;;17898:59:34;::::1;;;::::0;;;;-1:-1:-1;;;17898:59:34;::::1;;;::::0;;;;;17998:16;;;;-1:-1:-1;17898:59:34::1;18033:13;:38;;;;;;;;;:80;;;-1:-1:-1::0;18092:21:34::1;18075:13;:38;;;;;;;;;18033:80;18025:133;;;;-1:-1:-1::0;;;18025:133:34::1;;;;;;;:::i;:::-;18229:7;::::0;18201:23:::1;::::0;::::1;::::0;18229:7:::1;-1:-1:-1::0;;;18229:7:34;;::::1;::::0;::::1;::::0;18183:42:::1;::::0;18187:12:::1;::::0;18183:42:::1;:3;:42::i;:::-;18176:60;;;18168:105;;;;-1:-1:-1::0;;;18168:105:34::1;;;;;;;:::i;:::-;18303:24;18284:43:::0;;;-1:-1:-1;;;;;18337:22:34;::::1;;::::0;;;:10:::1;:22;::::0;;;;;;;:32;;;;;;;;:43;;;;18284:8;;18337:32;;-1:-1:-1;;18337:43:34::1;::::0;;;;;;::::1;;;;;;;;::::0;;-1:-1:-1;18337:43:34::1;::::0;::::1;::::0;;;::::1;::::0;;::::1;::::0;::::1;::::0;;::::1;::::0;::::1;;-1:-1:-1::0;;;18337:43:34::1;-1:-1:-1::0;;;;;18337:43:34::1;::::0;;::::1;-1:-1:-1::0;;;18337:43:34::1;-1:-1:-1::0;;;;;;;;;18337:43:34;;::::1;;;-1:-1:-1::0;;;;;;18337:43:34;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;::::1;;::::0;;18396:73;-1:-1:-1;;;;;;;;;;;18396:73:34;::::1;::::0;18410:8;;18420:12;;18434:24:::1;::::0;18460:8;;18396:73:::1;:::i;:::-;;;;;;;;2392:1;;;17707:769:::0;;;:::o;19338:1150::-;2440:15;:13;:15::i;:::-;1186:16:54::1;:14;:16::i;:::-;19504:15:34::2;19522:39:::0;;;:27:::2;:39;::::0;;;;;;;;19676:31;;-1:-1:-1;;;;;19522:39:34;;::::2;::::0;19592:25;19616:1:::2;19592:25:::0;;;;19621:16:::2;::::0;::::2;19591:46;::::0;19504:15;;19676:31:::2;::::0;19522:39;;19702:4;;;;19676:31:::2;;:::i;:::-;;::::0;;-1:-1:-1;;19676:31:34;;::::2;::::0;;;;;;19666:42;;19676:31:::2;19666:42:::0;;::::2;::::0;-1:-1:-1;;;;;19746:22:34;::::2;19718:25;19746:22:::0;;;:10:::2;:22:::0;;;;;:32;;;;;;;;19666:42;;-1:-1:-1;19817:21:34::2;19797:16:::0;;::::2;;:41;::::0;::::2;;;;;;;19789:86;;;;-1:-1:-1::0;;;19789:86:34::2;;;;;;;:::i;:::-;19886:42:::0;;-1:-1:-1;;19886:42:34::2;19905:23;19886:42;::::0;;19987:7;20006:380;::::2;;;20038:48;::::0;-1:-1:-1;;;20038:48:34;;-1:-1:-1;;;;;20038:30:34;::::2;::::0;::::2;::::0;:48:::2;::::0;20069:10;;20081:4;;;;20038:48:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;20006:380;;;20121:48;::::0;-1:-1:-1;;;20121:48:34;;-1:-1:-1;;;;;20121:30:34;::::2;::::0;::::2;::::0;:48:::2;::::0;20152:10;;20164:4;;;;20121:48:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;20117:259;;;::::0;;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;20238:40:34;;-1:-1:-1;;20238:40:34::2;20257:21;20238:40;::::0;;20301:36:::2;::::0;::::2;::::0;::::2;::::0;20324:12;;20301:36:::2;:::i;:::-;;;;;;;;20355:7;;;;;;;;20117:259;-1:-1:-1::0;;;;;;;;;;;20423:8:34::2;20433:12;20447:23;20472:8;20409:72;;;;;;;;;:::i;:::-;;;;;;;;1212:1:54;;;;;;19338:1150:34::0;;;;;;:::o;4402:112:53:-;4459:7;4485:12;;;:6;:12;;;;;:22;;;;4402:112::o;4764:223::-;4855:12;;;;:6;:12;;;;;:22;;;4847:45;;4879:12;:10;:12::i;4847:45::-;4839:105;;;;-1:-1:-1;;;4839:105:53;;;;;;;:::i;:::-;4955:25;4966:4;4972:7;4955:10;:25::i;:::-;4764:223;;:::o;5938:205::-;6035:12;:10;:12::i;:::-;-1:-1:-1;;;;;6024:23:53;:7;-1:-1:-1;;;;;6024:23:53;;6016:83;;;;-1:-1:-1;;;6016:83:53;;;;;;;:::i;:::-;6110:26;6122:4;6128:7;6110:11;:26::i;20878:214:34:-;2285:12;:10;:12::i;:::-;20994:9:::1;20989:97;21009:16:::0;;::::1;20989:97;;;21046:5;;21052:1;21046:8;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;21046:17:34::1;:29;21064:7;;21072:1;21064:10;;;;;;;;;;;;;21046:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21027:3:34::1;;20989:97;;;;20878:214:::0;;;;:::o;1163:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1163:46:34;;:::o;6365:189::-;2285:12;:10;:12::i;:::-;6473:22:::1;:12;:20;:22::i;:::-;6453:17;;:42;;;;;;;;;;;;;;;;;;6510:37;6534:12;6510:37;;;;;;:::i;:::-;;;;;;;;6365:189:::0;:::o;4045:176:53:-;4125:7;4151:12;;;:6;:12;;;;;;;;-1:-1:-1;;;;;4196:16:53;;4151:63;;:36;;;:63;;;;;4045:176;;;;;:::o;4901:119:34:-;4960:4;4983:30;-1:-1:-1;;;;;;;;;;;5005:7:34;4983;:30::i;9153:539::-;2285:12;:10;:12::i;:::-;9432:39:::1;::::0;;;:27:::1;:39;::::0;;;;;;;;:56;;-1:-1:-1;;;;;;9432:56:34::1;-1:-1:-1::0;;;;;9432:56:34;::::1;::::0;;::::1;::::0;;;9565:120;;-1:-1:-1;;;9565:120:34;;9432:56;;;9565:19:::1;::::0;:120:::1;::::0;9432:39;;9597:15;;9614:18;;9634:30;;9666:18;;9565:120:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2307:1;9153:539:::0;;;;;;:::o;889:76:54:-;928:4;951:7;;;889:76;:::o;5271:238:34:-;2285:12;:10;:12::i;:::-;5349:10:::1;-1:-1:-1::0;;;;;5349:22:34;::::1;;;5341:58;;;;-1:-1:-1::0;;;5341:58:34::1;;;;;;;:::i;:::-;5409:39;2044:4:53;5439:8:34::0;5409:9:::1;:39::i;:::-;5458:44;2044:4:53;5491:10:34;5458:12;:44::i;:::-;5271:238:::0;:::o;4591:183::-;-1:-1:-1;;;;;4726:21:34;;4693:4;4726:21;;;:10;:21;;;;;;;;:31;;;;;;;;;4716:51;;;;;;;;;;;;;4726:31;4716:51;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4716:51:34;;;;;-1:-1:-1;;;4716:51:34;;;;;;;;-1:-1:-1;;;4716:51:34;;;;;;;;;4759:7;4716:9;:51::i;:::-;4709:58;4591:183;-1:-1:-1;;;;4591:183:34:o;11731:123::-;11778:4;11801:46;-1:-1:-1;;;;;;;;;;;11801:32:34;:46::i;:::-;11794:53;;11731:123;:::o;5697:75::-;2285:12;:10;:12::i;:::-;5757:8:::1;:6;:8::i;:::-;5697:75::o:0;1252:62::-;;;;;;;;;;;;-1:-1:-1;;;;;1252:62:34;;:::o;10083:200::-;2285:12;:10;:12::i;:::-;10243:33:::1;::::0;-1:-1:-1;;;10243:33:34;;10218:14;;-1:-1:-1;;;;;10243:19:34;::::1;::::0;::::1;::::0;:33:::1;::::0;10263:12;;10243:33:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2307:1;10083:200:::0;;:::o;3824:136:53:-;3897:7;3923:12;;;:6;:12;;;;;:30;;3947:5;3923:23;:30::i;:::-;3916:37;3824:136;-1:-1:-1;;;3824:136:53:o;12008:169:34:-;2285:12;:10;:12::i;:::-;12085:4:::1;::::0;;;::::1;-1:-1:-1::0;;;;;12085:4:34::1;:14:::0;::::1;;12077:58;;;;-1:-1:-1::0;;;12077:58:34::1;;;;;;;:::i;:::-;12152:18;:6;:16;:18::i;:::-;12145:4;::::0;:25:::1;;;;;-1:-1:-1::0;;;;;12145:25:34::1;;;;;-1:-1:-1::0;;;;;12145:25:34::1;;;;;;12008:169:::0;:::o;2809:137:53:-;2878:4;2901:12;;;:6;:12;;;;;:38;;2931:7;2901:29;:38::i;2183:64:34:-;-1:-1:-1;;;;;;;;;;;2183:64:34;:::o;7512:254::-;7591:37;-1:-1:-1;;;;;;;;;;;7613:14:34;7591:7;:37::i;:::-;7583:81;;;;-1:-1:-1;;;7583:81:34;;;;;;;:::i;:::-;7674:40;-1:-1:-1;;;;;;;;;;;7699:14:34;7674:10;:40::i;:::-;7729:30;7744:14;7729:30;;;;;;:::i;702:24::-;;;;;;:::o;653:42::-;692:3;653:42;:::o;1999:49:53:-;2044:4;1999:49;:::o;11351:260:34:-;11456:15;;:::i;:::-;-1:-1:-1;;;;;11533:22:34;;;;11528:1;11504:25;;;;;11503:52;11572:22;;;11483:17;11572:22;;;:10;:22;;;;;;;;:32;;;;;;;;;;11565:39;;;;;;;;;;;;11572:32;;11565:39;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11565:39:34;;;;;-1:-1:-1;;;11565:39:34;;;;;;;;-1:-1:-1;;;11565:39:34;;;;;;;;;;11351:260;-1:-1:-1;;;;;11351:260:34:o;12415:205::-;2285:12;:10;:12::i;:::-;12591:22:::1;::::0;-1:-1:-1;;;12591:22:34;;12566:14;;-1:-1:-1;;;;;12591:16:34;::::1;::::0;::::1;::::0;:22:::1;::::0;12608:4;;12591:22:::1;;;:::i;14715:2479::-:0;2440:15;:13;:15::i;:::-;1186:16:54::1;:14;:16::i;:::-;14861:15:34::2;14879:39:::0;;;:27:::2;:39;::::0;;;;;;;;15033:31;;-1:-1:-1;;;;;14879:39:34;;::::2;::::0;14949:25;14973:1:::2;14949:25:::0;;;;14978:16:::2;::::0;::::2;14948:46;::::0;14861:15;;15033:31:::2;::::0;14879:39;;15059:4;;;;15033:31:::2;;:::i;:::-;;;;;;;;;;;;;15023:42;;;;;;15004:61;;15075:24;;:::i;:::-;-1:-1:-1::0;;;;;15102:22:34;::::2;;::::0;;;:10:::2;:22;::::0;;;;;;;:32;;;;;;;;;;15075:59;;::::2;::::0;::::2;::::0;;;;;;;::::2;;;::::0;::::2;;;;;;;;;;;;;;::::0;;;;::::2;::::0;::::2;-1:-1:-1::0;;;;;15075:59:34::2;;::::0;;::::2;::::0;;;;-1:-1:-1;;;15075:59:34;::::2;;;::::0;;;;;;;;-1:-1:-1;;;15075:59:34;;::::2;;;::::0;;;;;;;;-1:-1:-1;15153:39:34;;;:27:::2;:39:::0;;;;;;15075:59;;-1:-1:-1;;;;;;15153:39:34::2;15145:91;;;;-1:-1:-1::0;;;15145:91:34::2;;;;;;;:::i;:::-;15271:21;15251:16:::0;;:41:::2;::::0;::::2;;;;;;;15247:155;;;15308:63;15324:8;15334:12;15348:4;;15354:10;15366:4;15308:15;:63::i;:::-;15385:7;;;;;;15247:155;15433:16:::0;;15454:1:::2;::::0;15428:22:::2;::::0;::::2;;;;;;:27;;15420:75;;;;-1:-1:-1::0;;;15420:75:34::2;;;;;;;:::i;:::-;15514:31;15524:8;15534:10;15514:9;:31::i;:::-;15513:32;15505:66;;;;-1:-1:-1::0;;;15505:66:34::2;;;;;;;:::i;:::-;15606:23;15586:16:::0;;:43:::2;::::0;::::2;;;;;;;15582:785;;;-1:-1:-1::0;15656:219:34::2;::::0;;::::2;::::0;::::2;::::0;;15693:21:::2;15656:219:::0;;;-1:-1:-1;15656:219:34::2;::::0;::::2;::::0;;;;;;;::::2;15823:12;15656:219;::::0;;;;15895:70;;15656:219;;-1:-1:-1;;;;;;;;;;;15895:70:34;::::2;::::0;15909:8;;15919:12;;15693:21;15956:8;;15895:70:::2;:::i;:::-;;;;;;;;15582:785;;;16039:7;::::0;16011:23:::2;::::0;::::2;::::0;16039:7:::2;-1:-1:-1::0;;;16039:7:34;;::::2;::::0;::::2;::::0;15993:42:::2;::::0;15997:12:::2;::::0;15993:42:::2;:3;:42::i;:::-;15986:60;;;15982:385;;;16239:24;16220:43:::0;;;16283:73:::2;::::0;-1:-1:-1;;;;;;;;;;;16283:73:34;::::2;::::0;16297:8;;16307:12;;16347:8;;16283:73:::2;:::i;:::-;;;;;;;;15982:385;16401:24;16381:16:::0;;:44:::2;::::0;::::2;;;;;;;16377:612;;16462:58;16484:23;16496:10;16484:11;:23::i;:::-;16463:8;:18;;;-1:-1:-1::0;;;;;16463:44:34::2;;16462:56;:58::i;:::-;-1:-1:-1::0;;;;;16441:79:34::2;:18;::::0;::::2;:79:::0;16534:23:::2;::::0;;::::2;:25:::0;;::::2;;;;::::0;;16659:16;;16622:64;;::::2;::::0;::::2;::::0;16635:8;;16645:12;;16677:8;;16622:64:::2;:::i;:::-;;;;;;;;16794:17;::::0;16767:23:::2;::::0;::::2;::::0;16794:17:::2;;::::0;;::::2;::::0;::::2;16767:44:::0;::::2;;16763:216;;16850:21;16831:40:::0;;;16894:70:::2;::::0;-1:-1:-1;;;;;;;;;;;16894:70:34;::::2;::::0;16908:8;;16918:12;;16955:8;;16894:70:::2;:::i;:::-;;;;;;;;16763:216;-1:-1:-1::0;;;;;16998:22:34;::::2;;::::0;;;:10:::2;:22;::::0;;;;;;;:32;;;;;;;;:43;;;;17033:8;;16998:32;:43;:32;;-1:-1:-1;;16998:43:34::2;::::0;;::::2;::::0;::::2;;;;;;;;::::0;;-1:-1:-1;16998:43:34::2;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;;-1:-1:-1::0;;;16998:43:34::2;-1:-1:-1::0;;;;;16998:43:34::2;::::0;;::::2;-1:-1:-1::0;;;16998:43:34::2;-1:-1:-1::0;;;;;;;;;16998:43:34;;::::2;;;-1:-1:-1::0;;;;;;16998:43:34;;::::2;::::0;;;::::2;::::0;;;::::2;;::::0;;;::::2;::::0;;;::::2;::::0;;17076:21:::2;17056:16:::0;;:41:::2;::::0;::::2;;;;;;;17052:136;;;17113:64;17129:8;17139:12;17153:4;;17159:10;17171:5;17113:15;:64::i;:::-;1212:1:54;;;;14715:2479:34::0;;;;;:::o;770:19::-;;;;;;-1:-1:-1;;;;;770:19:34;;:::o;795:22::-;;;-1:-1:-1;;;795:22:34;;;;;:::o;3114:125:53:-;3177:7;3203:12;;;:6;:12;;;;;:29;;:27;:29::i;8307:298:34:-;2285:12;:10;:12::i;:::-;8428:39:::1;::::0;;;:27:::1;:39;::::0;;;;;;;;:56;;-1:-1:-1;;;;;;8428:56:34::1;-1:-1:-1::0;;;;;8428:56:34;::::1;::::0;;::::1;::::0;;;8553:45;;-1:-1:-1;;;8553:45:34;;8428:56;;;8553:19:::1;::::0;:45:::1;::::0;8428:39;;8585:12;;8553:45:::1;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;2307:1;8307:298:::0;;;:::o;6868:324::-;6945:37;-1:-1:-1;;;;;;;;;;;6967:14:34;6945:7;:37::i;:::-;6944:38;6936:81;;;;-1:-1:-1;;;6936:81:34;;;;;;;:::i;:::-;692:3;7035:16;:14;:16::i;:::-;:31;7027:66;;;;-1:-1:-1;;;7027:66:34;;;;;;;:::i;:::-;7103:39;-1:-1:-1;;;;;;;;;;;7127:14:34;7103:9;:39::i;:::-;7157:28;7170:14;7157:28;;;;;;:::i;5221:226:53:-;5313:12;;;;:6;:12;;;;;:22;;;5305:45;;5337:12;:10;:12::i;5305:45::-;5297:106;;;;-1:-1:-1;;;5297:106:53;;;;;;;:::i;732:32:34:-;;;;;;;;;:::o;10546:221::-;2285:12;:10;:12::i;:::-;10651:24:::1;::::0;::::1;;::::0;;;:14:::1;:24;::::0;;;;;-1:-1:-1;;;;;10651:24:34;;::::1;10643:32:::0;;::::1;;10635:83;;;;-1:-1:-1::0;;;10635:83:34::1;;;;;;;:::i;:::-;10728:24;::::0;;;::::1;;::::0;;;:14:::1;:24;::::0;;;;:32;;-1:-1:-1;;10728:32:34::1;-1:-1:-1::0;;;;;10728:32:34;;::::1;::::0;;;::::1;::::0;;10546:221::o;5962:79::-;2285:12;:10;:12::i;:::-;6024:10:::1;:8;:10::i;608:161:55:-:0;663:5;696:4;688:5;:12;680:53;;;;-1:-1:-1;;;680:53:55;;;;;;;:::i;:::-;-1:-1:-1;756:5:55;608:161::o;259:171::-;316:7;-1:-1:-1;;;343:5:55;:14;335:57;;;;-1:-1:-1;;;335:57:55;;;;;;;:::i;436:166::-;492:6;526:5;518;:13;510:55;;;;-1:-1:-1;;;510:55:55;;;;;;;:::i;6429:150:31:-;6499:4;6522:50;6527:3;-1:-1:-1;;;;;6547:23:31;;6522:4;:50::i;6984:165::-;7064:4;7087:55;7097:3;-1:-1:-1;;;;;7117:23:31;;7087:9;:55::i;1226:93:54:-;1284:7;;;;1283:8;1275:37;;;;-1:-1:-1;;;1275:37:54;;;;;;;:::i;2479:192:34:-;2541:39;2044:4:53;2569:10:34;2541:7;:39::i;:::-;:76;;;;2584:33;-1:-1:-1;;;;;;;;;;;2606:10:34;2584:7;:33::i;:::-;2533:131;;;;-1:-1:-1;;;2533:131:34;;;;;;;:::i;610:135:56:-;668:7;694:44;699:1;702;694:44;;;;;;;;;;;;;;;;;:4;:44::i;2817:133:34:-;2873:33;-1:-1:-1;;;;;;;;;;;2895:10:34;2873:7;:33::i;:::-;2865:78;;;;-1:-1:-1;;;2865:78:34;;;;;;;:::i;598:104:28:-;685:10;598:104;:::o;7025:184:53:-;7098:12;;;;:6;:12;;;;;:33;;7123:7;7098:24;:33::i;:::-;7094:109;;;7179:12;:10;:12::i;:::-;-1:-1:-1;;;;;7152:40:53;7170:7;-1:-1:-1;;;;;7152:40:53;7164:4;7152:40;;;;;;;;;;7025:184;;:::o;7215:188::-;7289:12;;;;:6;:12;;;;;:36;;7317:7;7289:27;:36::i;:::-;7285:112;;;7373:12;:10;:12::i;:::-;-1:-1:-1;;;;;7346:40:53;7364:7;-1:-1:-1;;;;;7346:40:53;7358:4;7346:40;;;;;;;;;;7215:188;;:::o;2677:134:34:-;2730:39;2044:4:53;2758:10:34;2730:7;:39::i;:::-;2722:82;;;;-1:-1:-1;;;2722:82:34;;;;;;;:::i;3125:166::-;3208:4;3283:1;3260:8;:18;;;-1:-1:-1;;;;;3255:24:34;3232:20;3244:7;3232:11;:20::i;:::-;:47;3231:53;;3125:166;-1:-1:-1;;;3125:166:34:o;1802:113:54:-;1186:16;:14;:16::i;:::-;1861:7:::1;:14:::0;;-1:-1:-1;;1861:14:54::1;1871:4;1861:14;::::0;;1890:18:::1;::::0;::::1;::::0;::::1;::::0;1897:10:::1;::::0;1890:18:::1;:::i;:::-;;;;;;;;1802:113::o:0;7677:156:31:-;7751:7;7801:22;7805:3;7817:5;7801:3;:22::i;2956:163:34:-;3015:4;3049:63;3053:55;-1:-1:-1;;;;;;;;;;;3100:7:34;3053:32;:55::i;:::-;3110:1;3049:3;:63::i;:::-;3043:1;3038:74;;;2956:163;-1:-1:-1;;2956:163:34:o;82:171:55:-;139:7;-1:-1:-1;;;166:5:55;:14;158:57;;;;-1:-1:-1;;;158:57:55;;;;;;;:::i;7230:115:31:-;7293:7;7319:19;7327:3;7319:7;:19::i;2047:115:54:-;1537:13;:11;:13::i;:::-;2115:5:::1;2105:15:::0;;-1:-1:-1;;2105:15:54::1;::::0;;2135:20:::1;::::0;::::1;::::0;::::1;::::0;2144:10:::1;::::0;2135:20:::1;:::i;1640:404:31:-:0;1703:4;1724:21;1734:3;1739:5;1724:9;:21::i;:::-;1719:319;;-1:-1:-1;1761:23:31;;;;;;;;:11;:23;;;;;;;;;;;;;1941:18;;1919:19;;;:12;;;:19;;;;;;:40;;;;1973:11;;1719:319;-1:-1:-1;2022:5:31;2015:12;;3805:127;3878:4;3901:19;;;:12;;;;;:19;;;;;;:24;;;3805:127::o;1029:188:56:-;1116:7;1151:12;1143:6;;;;1135:29;;;;-1:-1:-1;;;1135:29:56;;;;;;;;:::i;:::-;-1:-1:-1;;;1186:5:56;;;1029:188::o;6747:156:31:-;6820:4;6843:53;6851:3;-1:-1:-1;;;;;6871:23:31;;6843:7;:53::i;4452:201::-;4546:18;;4519:7;;4546:26;-1:-1:-1;4538:73:31;;;;-1:-1:-1;;;4538:73:31;;;;;;;:::i;:::-;4628:3;:11;;4640:5;4628:18;;;;;;;;;;;;;;;;4621:25;;4452:201;;;;:::o;4013:107::-;4095:18;;4013:107::o;1574:93:54:-;1628:7;;;;1620:40;;;;-1:-1:-1;;;1620:40:54;;;;;;;:::i;2212:1512:31:-;2278:4;2415:19;;;:12;;;:19;;;;;;2449:15;;2445:1273;;2878:18;;-1:-1:-1;;2830:14:31;;;;2878:22;;;;2806:21;;2878:3;;:22;;3160;;;;;;;;;;;;;;3140:42;;3303:9;3274:3;:11;;3286:13;3274:26;;;;;;;;;;;;;;;;;;;:38;;;;3378:23;;;3420:1;3378:12;;;:23;;;;;;3404:17;;;3378:43;;3527:17;;3378:3;;3527:17;;;;;;;;;;;;;;;;;;;;;;3619:3;:12;;:19;3632:5;3619:19;;;;;;;;;;;3612:26;;;3660:4;3653:11;;;;;;;;2445:1273;3702:5;3695:12;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;321:360::-;;;459:3;452:4;444:6;440:17;436:27;426:2;;-1:-1;;467:12;426:2;-1:-1;497:20;;-1:-1;;;;;526:30;;523:2;;;-1:-1;;559:12;523:2;603:4;595:6;591:17;579:29;;654:3;603:4;;638:6;634:17;595:6;620:32;;617:41;614:2;;;671:1;;661:12;614:2;419:262;;;;;:::o;1484:336::-;;;1598:3;1591:4;1583:6;1579:17;1575:27;1565:2;;-1:-1;;1606:12;1565:2;-1:-1;1636:20;;-1:-1;;;;;1665:30;;1662:2;;;-1:-1;;1698:12;1662:2;1742:4;1734:6;1730:17;1718:29;;1793:3;1742:4;1773:17;1734:6;1759:32;;1756:41;1753:2;;;1810:1;;1800:12;2865:128;2931:20;;-1:-1;;;;;46761:30;;49289:34;;49279:2;;49337:1;;49327:12;3135:126;3200:20;;46979:4;46968:16;;49532:33;;49522:2;;49579:1;;49569:12;3268:241;;3372:2;3360:9;3351:7;3347:23;3343:32;3340:2;;;-1:-1;;3378:12;3340:2;85:6;72:20;97:33;124:5;97:33;:::i;3780:366::-;;;3901:2;3889:9;3880:7;3876:23;3872:32;3869:2;;;-1:-1;;3907:12;3869:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3959:63;-1:-1;4059:2;4098:22;;72:20;97:33;72:20;97:33;:::i;:::-;4067:63;;;;3863:283;;;;;:::o;4153:491::-;;;;4291:2;4279:9;4270:7;4266:23;4262:32;4259:2;;;-1:-1;;4297:12;4259:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4349:63;-1:-1;4449:2;4488:22;;1265:20;;-1:-1;4557:2;4596:22;;72:20;97:33;72:20;97:33;:::i;:::-;4565:63;;;;4253:391;;;;;:::o;4651:865::-;;;;;;;4838:3;4826:9;4817:7;4813:23;4809:33;4806:2;;;-1:-1;;4845:12;4806:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4897:63;-1:-1;4997:2;5036:22;;1265:20;;-1:-1;5105:2;5144:22;;72:20;97:33;72:20;97:33;:::i;:::-;5113:63;-1:-1;5213:2;5251:22;;1401:20;1426:32;1401:20;1426:32;:::i;:::-;5221:62;-1:-1;5320:3;5360:22;;2795:20;;-1:-1;5429:3;5468:22;;1401:20;1426:32;1401:20;1426:32;:::i;:::-;5438:62;;;;4800:716;;;;;;;;:::o;5523:470::-;;;5653:2;5641:9;5632:7;5628:23;5624:32;5621:2;;;-1:-1;;5659:12;5621:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5711:63;-1:-1;5839:2;5824:18;;5811:32;-1:-1;;;;;5852:30;;5849:2;;;-1:-1;;5885:12;5849:2;5945:22;;1923:4;1911:17;;1907:27;-1:-1;1897:2;;-1:-1;;1938:12;1897:2;1985:6;1972:20;2007:64;2022:48;2063:6;2022:48;:::i;:::-;2007:64;:::i;:::-;2091:6;2084:5;2077:21;2195:3;5839:2;2186:6;2119;2177:16;;2174:25;2171:2;;;-1:-1;;2202:12;2171:2;47608:6;5839:2;2119:6;2115:17;5839:2;2153:5;2149:16;47585:30;47646:16;;;5839:2;47646:16;47639:27;;;;-1:-1;5615:378;;2153:5;;-1:-1;5615:378;-1:-1;5615:378::o;6000:694::-;;;;;6199:2;6187:9;6178:7;6174:23;6170:32;6167:2;;;-1:-1;;6205:12;6167:2;6263:17;6250:31;-1:-1;;;;;6301:18;6293:6;6290:30;6287:2;;;-1:-1;;6323:12;6287:2;6361:88;6441:7;6432:6;6421:9;6417:22;6361:88;:::i;:::-;6343:106;;-1:-1;6343:106;-1:-1;6514:2;6499:18;;6486:32;;-1:-1;6527:30;;;6524:2;;;-1:-1;;6560:12;6524:2;;6598:80;6670:7;6661:6;6650:9;6646:22;6598:80;:::i;:::-;6161:533;;;;-1:-1;6580:98;-1:-1;;;;6161:533::o;6701:241::-;;6805:2;6793:9;6784:7;6780:23;6776:32;6773:2;;;-1:-1;;6811:12;6773:2;-1:-1;1265:20;;6767:175;-1:-1;6767:175::o;6949:366::-;;;7070:2;7058:9;7049:7;7045:23;7041:32;7038:2;;;-1:-1;;7076:12;7038:2;1278:6;1265:20;7128:63;;7228:2;7271:9;7267:22;72:20;97:33;124:5;97:33;:::i;7322:366::-;;;7443:2;7431:9;7422:7;7418:23;7414:32;7411:2;;;-1:-1;;7449:12;7411:2;-1:-1;;1265:20;;;7601:2;7640:22;;;2795:20;;-1:-1;7405:283::o;7695:360::-;;7819:2;7807:9;7798:7;7794:23;7790:32;7787:2;;;-1:-1;;7825:12;7787:2;7876:17;7870:24;-1:-1;;;;;7906:6;7903:30;7900:2;;;-1:-1;;7936:12;7900:2;8007:22;;2383:4;2371:17;;2367:27;-1:-1;2357:2;;-1:-1;;2398:12;2357:2;2438:6;2432:13;2460:64;2475:48;2516:6;2475:48;:::i;2460:64::-;2544:6;2537:5;2530:21;2648:3;7819:2;2639:6;2572;2630:16;;2627:25;2624:2;;;-1:-1;;2655:12;2624:2;2675:39;2707:6;7819:2;2606:5;2602:16;7819:2;2572:6;2568:17;2675:39;:::i;:::-;7956:83;7781:274;-1:-1;;;;;7781:274::o;8310:489::-;;;;8447:2;8435:9;8426:7;8422:23;8418:32;8415:2;;;-1:-1;;8453:12;8415:2;3079:6;3066:20;-1:-1;;;;;49438:5;46864:32;49414:5;49411:34;49401:2;;-1:-1;;49449:12;8806:237;;8908:2;8896:9;8887:7;8883:23;8879:32;8876:2;;;-1:-1;;8914:12;8876:2;8976:51;9019:7;8995:22;8976:51;:::i;9050:611::-;;;;;9205:2;9193:9;9184:7;9180:23;9176:32;9173:2;;;-1:-1;;9211:12;9173:2;9273:51;9316:7;9292:22;9273:51;:::i;:::-;9263:61;;9361:2;9404:9;9400:22;1265:20;9369:63;;9497:2;9486:9;9482:18;9469:32;-1:-1;;;;;9513:6;9510:30;9507:2;;;-1:-1;;9543:12;9507:2;9581:64;9637:7;9628:6;9617:9;9613:22;9581:64;:::i;9668:360::-;;;9786:2;9774:9;9765:7;9761:23;9757:32;9754:2;;;-1:-1;;9792:12;9754:2;3213:6;3200:20;3225:31;3250:5;3225:31;:::i;:::-;9844:61;-1:-1;9942:2;9980:22;;2931:20;2956:32;2931:20;2956:32;:::i;10035:485::-;;;;10170:2;10158:9;10149:7;10145:23;10141:32;10138:2;;;-1:-1;;10176:12;10138:2;10238:51;10281:7;10257:22;10238:51;:::i;:::-;10228:61;;10344:52;10388:7;10326:2;10368:9;10364:22;10344:52;:::i;:::-;10334:62;;10433:2;10476:9;10472:22;1265:20;10441:63;;10132:388;;;;;:::o;10527:735::-;;;;;;10698:3;10686:9;10677:7;10673:23;10669:33;10666:2;;;-1:-1;;10705:12;10666:2;3213:6;3200:20;3225:31;3250:5;3225:31;:::i;:::-;10757:61;-1:-1;10855:2;10893:22;;2931:20;2956:32;2931:20;2956:32;:::i;:::-;10863:62;-1:-1;10962:2;11001:22;;1265:20;;-1:-1;11098:2;11083:18;;11070:32;-1:-1;;;;;11111:30;;11108:2;;;-1:-1;;11144:12;11108:2;11182:64;11238:7;11229:6;11218:9;11214:22;11182:64;:::i;:::-;10660:602;;;;-1:-1;10660:602;;-1:-1;11164:82;;;10660:602;-1:-1;;;10660:602::o;11269:855::-;;;;;;;11454:3;11442:9;11433:7;11429:23;11425:33;11422:2;;;-1:-1;;11461:12;11422:2;11523:51;11566:7;11542:22;11523:51;:::i;:::-;11513:61;;11629:52;11673:7;11611:2;11653:9;11649:22;11629:52;:::i;:::-;11619:62;;11746:2;11735:9;11731:18;11718:32;-1:-1;;;;;11762:6;11759:30;11756:2;;;-1:-1;;11792:12;11756:2;11830:64;11886:7;11877:6;11866:9;11862:22;11830:64;:::i;:::-;11812:82;;-1:-1;11812:82;-1:-1;;11931:2;11970:22;;1265:20;;-1:-1;12039:3;12076:22;;1131:20;45731:13;;45724:21;48799:32;;48789:2;;-1:-1;;48835:12;12930:297;;45080:6;45075:3;45068:19;47608:6;47603:3;45117:4;45112:3;45108:14;47585:30;-1:-1;45117:4;47655:6;45112:3;47646:16;;47639:27;45117:4;48239:7;;48243:2;13213:6;48223:14;48219:28;45112:3;13182:39;;13175:46;;13030:197;;;;;:::o;13576:343::-;;13718:5;44795:12;45080:6;45075:3;45068:19;13811:52;13856:6;45117:4;45112:3;45108:14;45117:4;13837:5;13833:16;13811:52;:::i;:::-;48239:7;48223:14;-1:-1;;48219:28;13875:39;;;;45117:4;13875:39;;13666:253;-1:-1;;13666:253::o;25788:430::-;;48330:14;;12539:5;48334:2;48330:14;;12496:3;12489:58;47608:6;47603:3;26069:2;26064:3;26060:12;47585:30;47646:16;;26069:2;47646:16;47639:27;;;47646:16;25960:258;-1:-1;;25960:258::o;26225:222::-;-1:-1;;;;;46320:54;;;;12351:37;;26352:2;26337:18;;26323:124::o;26699:210::-;45731:13;;45724:21;12624:34;;26820:2;26805:18;;26791:118::o;26916:222::-;12741:37;;;27043:2;27028:18;;27014:124::o;27145:333::-;12741:37;;;-1:-1;;;;;46320:54;27464:2;27449:18;;12351:37;27300:2;27285:18;;27271:207::o;27485:564::-;12741:37;;;-1:-1;;;;;46320:54;;27876:2;27861:18;;12210:58;27704:2;27913;27898:18;;27891:48;;;27485:564;;27953:86;;27689:18;;28025:6;28017;27953:86;:::i;:::-;27945:94;27675:374;-1:-1;;;;;;27675:374::o;28056:660::-;12741:37;;;-1:-1;;;;;46320:54;;;;28456:2;28441:18;;12351:37;-1:-1;;;;;;45897:78;;;28537:2;28522:18;;12859:36;28620:2;28605:18;;12741:37;45897:78;28701:3;28686:19;;12859:36;28291:3;28276:19;;28262:454::o;28723:437::-;;12771:5;12748:3;12741:37;28906:2;29024;29013:9;29009:18;29002:48;29064:86;28906:2;28895:9;28891:18;29136:6;29128;29064:86;:::i;29167:306::-;;29312:2;29333:17;29326:47;29387:76;29312:2;29301:9;29297:18;29449:6;29387:76;:::i;29797:416::-;29997:2;30011:47;;;14829:2;29982:18;;;45068:19;14865:34;45108:14;;;14845:55;-1:-1;;;14920:12;;;14913:26;14958:12;;;29968:245::o;30220:416::-;30420:2;30434:47;;;15209:2;30405:18;;;45068:19;15245:32;45108:14;;;15225:53;15297:12;;;30391:245::o;30643:416::-;30843:2;30857:47;;;15548:2;30828:18;;;45068:19;15584:34;45108:14;;;15564:55;-1:-1;;;15639:12;;;15632:39;15690:12;;;30814:245::o;31066:416::-;31266:2;31280:47;;;15941:2;31251:18;;;45068:19;-1:-1;;;45108:14;;;15957:44;16020:12;;;31237:245::o;31489:416::-;31689:2;31703:47;;;16271:2;31674:18;;;45068:19;-1:-1;;;45108:14;;;16287:43;16349:12;;;31660:245::o;31912:416::-;32112:2;32126:47;;;16600:2;32097:18;;;45068:19;16636:33;45108:14;;;16616:54;16689:12;;;32083:245::o;32335:416::-;32535:2;32549:47;;;16940:2;32520:18;;;45068:19;16976:32;45108:14;;;16956:53;17028:12;;;32506:245::o;32758:416::-;32958:2;32972:47;;;17279:2;32943:18;;;45068:19;17315:31;45108:14;;;17295:52;17366:12;;;32929:245::o;33181:416::-;33381:2;33395:47;;;17617:2;33366:18;;;45068:19;-1:-1;;;45108:14;;;17633:45;17697:12;;;33352:245::o;33604:416::-;33804:2;33818:47;;;17948:2;33789:18;;;45068:19;-1:-1;;;45108:14;;;17964:45;18028:12;;;33775:245::o;34027:416::-;34227:2;34241:47;;;18279:2;34212:18;;;45068:19;18315:30;45108:14;;;18295:51;18365:12;;;34198:245::o;34450:416::-;34650:2;34664:47;;;18616:2;34635:18;;;45068:19;18652:30;45108:14;;;18632:51;18702:12;;;34621:245::o;34873:416::-;35073:2;35087:47;;;35058:18;;;45068:19;18989:34;45108:14;;;18969:55;19043:12;;;35044:245::o;35296:416::-;35496:2;35510:47;;;19294:2;35481:18;;;45068:19;19330:32;45108:14;;;19310:53;19382:12;;;35467:245::o;35719:416::-;35919:2;35933:47;;;19633:2;35904:18;;;45068:19;19669:34;45108:14;;;19649:55;-1:-1;;;19724:12;;;19717:40;19776:12;;;35890:245::o;36142:416::-;36342:2;36356:47;;;36327:18;;;45068:19;20063:34;45108:14;;;20043:55;20117:12;;;36313:245::o;36565:416::-;36765:2;36779:47;;;36750:18;;;45068:19;20404:34;45108:14;;;20384:55;20458:12;;;36736:245::o;36988:416::-;37188:2;37202:47;;;20709:2;37173:18;;;45068:19;-1:-1;;;45108:14;;;20725:39;20783:12;;;37159:245::o;37411:416::-;37611:2;37625:47;;;21034:2;37596:18;;;45068:19;21070:34;45108:14;;;21050:55;-1:-1;;;21125:12;;;21118:30;21167:12;;;37582:245::o;37834:416::-;38034:2;38048:47;;;21418:2;38019:18;;;45068:19;21454:32;45108:14;;;21434:53;21506:12;;;38005:245::o;38257:416::-;38457:2;38471:47;;;21757:2;38442:18;;;45068:19;21793:25;45108:14;;;21773:46;21838:12;;;38428:245::o;38680:416::-;38880:2;38894:47;;;38865:18;;;45068:19;22125:34;45108:14;;;22105:55;22179:12;;;38851:245::o;39103:416::-;39303:2;39317:47;;;22430:2;39288:18;;;45068:19;22466:32;45108:14;;;22446:53;22518:12;;;39274:245::o;39526:416::-;39726:2;39740:47;;;22769:2;39711:18;;;45068:19;22805:33;45108:14;;;22785:54;22858:12;;;39697:245::o;39949:416::-;40149:2;40163:47;;;23109:2;40134:18;;;45068:19;23145:27;45108:14;;;23125:48;23192:12;;;40120:245::o;40372:416::-;40572:2;40586:47;;;23443:2;40557:18;;;45068:19;23479:34;45108:14;;;23459:55;-1:-1;;;23534:12;;;23527:27;23573:12;;;40543:245::o;40795:416::-;40995:2;41009:47;;;23824:2;40980:18;;;45068:19;23860:34;45108:14;;;23840:55;-1:-1;;;23915:12;;;23908:39;23966:12;;;40966:245::o;41218:327::-;24261:23;;41397:3;41382:19;;;48450:1;48440:12;;48430:2;;48456:9;48430:2;14004:67;;24454:4;24443:16;;;24437:23;-1:-1;;;;;46448:64;24514:14;;;25060:37;24618:4;24607:16;;;24601:23;46979:4;46968:16;24674:14;;;25627:35;24778:4;24767:16;;;24761:23;46675:12;46664:24;24836:14;;;;25288:36;;;;41368:177;:::o;41552:222::-;-1:-1;;;;;46200:46;;;;24950:37;;41679:2;41664:18;;41650:124::o;42010:218::-;46675:12;46664:24;;;;25288:36;;42135:2;42120:18;;42106:122::o;42235:218::-;-1:-1;;;;;46761:30;;;;25522:36;;42360:2;42345:18;;42331:122::o;42460:214::-;46979:4;46968:16;;;;25627:35;;42583:2;42568:18;;42554:120::o;42681:844::-;;46979:4;25655:5;46968:16;25634:3;25627:35;12771:5;43121:2;43110:9;43106:18;12741:37;-1:-1;;;;;25551:5;46761:30;43202:2;43191:9;43187:18;25522:36;42960:3;43239:2;43228:9;43224:18;43217:48;43279:86;42960:3;42949:9;42945:19;43351:6;43343;43279:86;:::i;:::-;43414:9;43408:4;43404:20;43398:3;43387:9;43383:19;43376:49;43439:76;43510:4;43501:6;43439:76;:::i;:::-;43431:84;42931:594;-1:-1;;;;;;;;;42931:594::o;43532:578::-;46979:4;46968:16;;25627:35;;-1:-1;;;;;46761:30;;43913:2;43898:18;;25522:36;43754:3;43739:19;;48450:1;48440:12;;48430:2;;48456:9;48430:2;44013;43998:18;;14004:67;;;;44096:2;44081:18;12741:37;43725:385;;-1:-1;;43725:385::o;44117:256::-;44179:2;44173:9;44205:17;;;-1:-1;;;;;44265:34;;44301:22;;;44262:62;44259:2;;;44337:1;;44327:12;44259:2;44179;44346:22;44157:216;;-1:-1;44157:216::o;44380:321::-;;-1:-1;;;;;44515:6;44512:30;44509:2;;;-1:-1;;44545:12;44509:2;-1:-1;48239:7;44599:17;-1:-1;;44595:33;44686:4;44676:15;;44446:255::o;47681:268::-;47746:1;47753:101;47767:6;47764:1;47761:13;47753:101;;;47834:11;;;47828:18;47815:11;;;47808:39;47789:2;47782:10;47753:101;;;47869:6;47866:1;47863:13;47860:2;;;47746:1;47925:6;47920:3;47916:16;47909:27;47860:2;;47730:219;;;:::o;48479:117::-;-1:-1;;;;;46320:54;;48538:35;;48528:2;;48587:1;;48577:12;48985:115;-1:-1;;;;;;45897:78;;49043:34;;49033:2;;49091:1;;49081:12;49231:115;-1:-1;;;;;49316:5;46761:30;49292:5;49289:34;49279:2;;49337:1;;49327:12;49475:113;46979:4;49558:5;46968:16;49535:5;49532:33;49522:2;;49579:1;;49569:12",
  "source": "// SPDX-License-Identifier: LGPL-3.0-only\npragma solidity 0.6.12;\npragma experimental ABIEncoderV2;\n\nimport \"./utils/AccessControl.sol\";\nimport \"./utils/Pausable.sol\";\nimport \"./utils/SafeMath.sol\";\nimport \"./utils/SafeCast.sol\";\nimport \"./interfaces/IDepositExecute.sol\";\nimport \"./interfaces/IERCHandler.sol\";\nimport \"./interfaces/IGenericHandler.sol\";\n\n/**\n    @title Facilitates deposits, creation and voting of deposit proposals, and deposit executions.\n    @author ChainSafe Systems.\n */\ncontract Bridge is Pausable, AccessControl, SafeMath {\n    using SafeCast for *;\n\n    // Limit relayers number because proposal can fit only so much votes\n    uint256 constant public MAX_RELAYERS = 200;\n\n    uint8   public _domainID;\n    uint8   public _relayerThreshold;\n    uint128 public _fee;\n    uint40  public _expiry;\n\n    enum ProposalStatus {Inactive, Active, Passed, Executed, Cancelled}\n\n    struct Proposal {\n        ProposalStatus _status;\n        uint200 _yesVotes;      // bitmap, 200 maximum votes\n        uint8   _yesVotesTotal;\n        uint40  _proposedBlock; // 1099511627775 maximum block\n    }\n\n    // destinationDomainID => number of deposits\n    mapping(uint8 => uint64) public _depositCounts;\n    // resourceID => handler address\n    mapping(bytes32 => address) public _resourceIDToHandlerAddress;\n    // destinationDomainID + depositNonce => dataHash => Proposal\n    mapping(uint72 => mapping(bytes32 => Proposal)) private _proposals;\n\n    event RelayerThresholdChanged(uint256 newThreshold);\n    event RelayerAdded(address relayer);\n    event RelayerRemoved(address relayer);\n    event Deposit(\n        uint8   destinationDomainID,\n        bytes32 resourceID,\n        uint64  depositNonce,\n        address indexed user,\n        bytes data,\n        bytes handlerResponse\n    );\n    event ProposalEvent(\n        uint8          originDomainID,\n        uint64         depositNonce,\n        ProposalStatus status,\n        bytes32 dataHash\n    );\n    event ProposalVote(\n        uint8   originDomainID,\n        uint64  depositNonce,\n        ProposalStatus status,\n        bytes32 dataHash\n    );\n    event FailedHandlerExecution(\n        bytes lowLevelData\n    );\n\n    bytes32 public constant RELAYER_ROLE = keccak256(\"RELAYER_ROLE\");\n\n    modifier onlyAdmin() {\n        _onlyAdmin();\n        _;\n    }\n\n    modifier onlyAdminOrRelayer() {\n        _onlyAdminOrRelayer();\n        _;\n    }\n\n    modifier onlyRelayers() {\n        _onlyRelayers();\n        _;\n    }\n\n    function _onlyAdminOrRelayer() private view {\n        require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender) || hasRole(RELAYER_ROLE, msg.sender),\n            \"sender is not relayer or admin\");\n    }\n\n    function _onlyAdmin() private view {\n        require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), \"sender doesn't have admin role\");\n    }\n\n    function _onlyRelayers() private view {\n        require(hasRole(RELAYER_ROLE, msg.sender), \"sender doesn't have relayer role\");\n    }\n\n    function _relayerBit(address relayer) private view returns(uint) {\n        return uint(1) << sub(AccessControl.getRoleMemberIndex(RELAYER_ROLE, relayer), 1);\n    }\n\n    function _hasVoted(Proposal memory proposal, address relayer) private view returns(bool) {\n        return (_relayerBit(relayer) & uint(proposal._yesVotes)) > 0;\n    }\n\n    /**\n        @notice Initializes Bridge, creates and grants {msg.sender} the admin role,\n        creates and grants {initialRelayers} the relayer role.\n        @param domainID ID of chain the Bridge contract exists on.\n        @param initialRelayers Addresses that should be initially granted the relayer role.\n        @param initialRelayerThreshold Number of votes needed for a deposit proposal to be considered passed.\n     */\n    constructor (uint8 domainID, address[] memory initialRelayers, uint256 initialRelayerThreshold, uint256 fee, uint256 expiry) public {\n        _domainID = domainID;\n        _relayerThreshold = initialRelayerThreshold.toUint8();\n        _fee = fee.toUint128();\n        _expiry = expiry.toUint40();\n\n        _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);\n\n        for (uint256 i; i < initialRelayers.length; i++) {\n            grantRole(RELAYER_ROLE, initialRelayers[i]);\n        }\n    }\n\n    /**\n        @notice Returns true if {relayer} has voted on {destNonce} {dataHash} proposal.\n        @notice Naming left unchanged for backward compatibility.\n        @param destNonce destinationDomainID + depositNonce of the proposal.\n        @param dataHash Hash of data to be provided when deposit proposal is executed.\n        @param relayer Address to check.\n     */\n    function _hasVotedOnProposal(uint72 destNonce, bytes32 dataHash, address relayer) public view returns(bool) {\n        return _hasVoted(_proposals[destNonce][dataHash], relayer);\n    }\n\n    /**\n        @notice Returns true if {relayer} has the relayer role.\n        @param relayer Address to check.\n     */\n    function isRelayer(address relayer) external view returns (bool) {\n        return hasRole(RELAYER_ROLE, relayer);\n    }\n\n    /**\n        @notice Removes admin role from {msg.sender} and grants it to {newAdmin}.\n        @notice Only callable by an address that currently has the admin role.\n        @param newAdmin Address that admin role will be granted to.\n     */\n    function renounceAdmin(address newAdmin) external onlyAdmin {\n        require(msg.sender != newAdmin, 'Cannot renounce oneself');\n        grantRole(DEFAULT_ADMIN_ROLE, newAdmin);\n        renounceRole(DEFAULT_ADMIN_ROLE, msg.sender);\n    }\n\n    /**\n        @notice Pauses deposits, proposal creation and voting, and deposit executions.\n        @notice Only callable by an address that currently has the admin role.\n     */\n    function adminPauseTransfers() external onlyAdmin {\n        _pause();\n    }\n\n    /**\n        @notice Unpauses deposits, proposal creation and voting, and deposit executions.\n        @notice Only callable by an address that currently has the admin role.\n     */\n    function adminUnpauseTransfers() external onlyAdmin {\n        _unpause();\n    }\n\n    /**\n        @notice Modifies the number of votes required for a proposal to be considered passed.\n        @notice Only callable by an address that currently has the admin role.\n        @param newThreshold Value {_relayerThreshold} will be changed to.\n        @notice Emits {RelayerThresholdChanged} event.\n     */\n    function adminChangeRelayerThreshold(uint256 newThreshold) external onlyAdmin {\n        _relayerThreshold = newThreshold.toUint8();\n        emit RelayerThresholdChanged(newThreshold);\n    }\n\n    /**\n        @notice Grants {relayerAddress} the relayer role.\n        @notice Only callable by an address that currently has the admin role, which is\n                checked in grantRole().\n        @param relayerAddress Address of relayer to be added.\n        @notice Emits {RelayerAdded} event.\n     */\n    function adminAddRelayer(address relayerAddress) external {\n        require(!hasRole(RELAYER_ROLE, relayerAddress), \"addr already has relayer role!\");\n        require(_totalRelayers() < MAX_RELAYERS, \"relayers limit reached\");\n        grantRole(RELAYER_ROLE, relayerAddress);\n        emit RelayerAdded(relayerAddress);\n    }\n\n    /**\n        @notice Removes relayer role for {relayerAddress}.\n        @notice Only callable by an address that currently has the admin role, which is\n                checked in revokeRole().\n        @param relayerAddress Address of relayer to be removed.\n        @notice Emits {RelayerRemoved} event.\n     */\n    function adminRemoveRelayer(address relayerAddress) external {\n        require(hasRole(RELAYER_ROLE, relayerAddress), \"addr doesn't have relayer role!\");\n        revokeRole(RELAYER_ROLE, relayerAddress);\n        emit RelayerRemoved(relayerAddress);\n    }\n\n    /**\n        @notice Sets a new resource for handler contracts that use the IERCHandler interface,\n        and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n        @notice Only callable by an address that currently has the admin role.\n        @param handlerAddress Address of handler resource will be set for.\n        @param resourceID ResourceID to be used when making deposits.\n        @param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed.\n     */\n    function adminSetResource(address handlerAddress, bytes32 resourceID, address tokenAddress) external onlyAdmin {\n        _resourceIDToHandlerAddress[resourceID] = handlerAddress;\n        IERCHandler handler = IERCHandler(handlerAddress);\n        handler.setResource(resourceID, tokenAddress);\n    }\n\n    /**\n        @notice Sets a new resource for handler contracts that use the IGenericHandler interface,\n        and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n        @notice Only callable by an address that currently has the admin role.\n        @param handlerAddress Address of handler resource will be set for.\n        @param resourceID ResourceID to be used when making deposits.\n        @param contractAddress Address of contract to be called when a deposit is made and a deposited is executed.\n     */\n    function adminSetGenericResource(\n        address handlerAddress,\n        bytes32 resourceID,\n        address contractAddress,\n        bytes4 depositFunctionSig,\n        uint256 depositFunctionDepositerOffset,\n        bytes4 executeFunctionSig\n    ) external onlyAdmin {\n        _resourceIDToHandlerAddress[resourceID] = handlerAddress;\n        IGenericHandler handler = IGenericHandler(handlerAddress);\n        handler.setResource(resourceID, contractAddress, depositFunctionSig, depositFunctionDepositerOffset, executeFunctionSig);\n    }\n\n    /**\n        @notice Sets a resource as burnable for handler contracts that use the IERCHandler interface.\n        @notice Only callable by an address that currently has the admin role.\n        @param handlerAddress Address of handler resource will be set for.\n        @param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed.\n     */\n    function adminSetBurnable(address handlerAddress, address tokenAddress) external onlyAdmin {\n        IERCHandler handler = IERCHandler(handlerAddress);\n        handler.setBurnable(tokenAddress);\n    }\n\n    /**\n        @notice Sets the nonce for the specific domainID.\n        @notice Only callable by an address that currently has the admin role.\n        @param domainID Domain ID for increasing nonce.\n        @param nonce The nonce value to be set.\n     */\n    function adminSetDepositNonce(uint8 domainID, uint64 nonce) external onlyAdmin {\n        require(nonce > _depositCounts[domainID], \"Does not allow decrements of the nonce\");\n        _depositCounts[domainID] = nonce;\n    }\n\n    /**\n        @notice Returns a proposal.\n        @param originDomainID Chain ID deposit originated from.\n        @param depositNonce ID of proposal generated by proposal's origin Bridge contract.\n        @param dataHash Hash of data to be provided when deposit proposal is executed.\n        @return Proposal which consists of:\n        - _dataHash Hash of data to be provided when deposit proposal is executed.\n        - _yesVotes Number of votes in favor of proposal.\n        - _noVotes Number of votes against proposal.\n        - _status Current status of proposal.\n     */\n    function getProposal(uint8 originDomainID, uint64 depositNonce, bytes32 dataHash) external view returns (Proposal memory) {\n        uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(originDomainID);\n        return _proposals[nonceAndID][dataHash];\n    }\n\n    /**\n        @notice Returns total relayers number.\n        @notice Added for backwards compatibility.\n     */\n    function _totalRelayers() public view returns (uint) {\n        return AccessControl.getRoleMemberCount(RELAYER_ROLE);\n    }\n\n    /**\n        @notice Changes deposit fee.\n        @notice Only callable by admin.\n        @param newFee Value {_fee} will be updated to.\n     */\n    function adminChangeFee(uint256 newFee) external onlyAdmin {\n        require(_fee != newFee, \"Current fee is equal to new fee\");\n        _fee = newFee.toUint128();\n    }\n\n    /**\n        @notice Used to manually withdraw funds from ERC safes.\n        @param handlerAddress Address of handler to withdraw from.\n        @param data ABI-encoded withdrawal params relevant to the specified handler.\n     */\n    function adminWithdraw(\n        address handlerAddress,\n        bytes memory data\n    ) external onlyAdmin {\n        IERCHandler handler = IERCHandler(handlerAddress);\n        handler.withdraw(data);\n    }\n\n    /**\n        @notice Initiates a transfer using a specified handler contract.\n        @notice Only callable when Bridge is not paused.\n        @param destinationDomainID ID of chain deposit will be bridged to.\n        @param resourceID ResourceID used to find address of handler to be used for deposit.\n        @param data Additional data to be passed to specified handler.\n        @notice Emits {Deposit} event with all necessary parameters and a handler response.\n        - ERC20Handler: responds with an empty data.\n        - ERC721Handler: responds with the deposited token metadata acquired by calling a tokenURI method in the token contract.\n        - GenericHandler: responds with the raw bytes returned from the call to the target contract.\n     */\n    function deposit(uint8 destinationDomainID, bytes32 resourceID, bytes calldata data) external payable whenNotPaused {\n        require(msg.value == _fee, \"Incorrect fee supplied\");\n\n        address handler = _resourceIDToHandlerAddress[resourceID];\n        require(handler != address(0), \"resourceID not mapped to handler\");\n\n        uint64 depositNonce = ++_depositCounts[destinationDomainID];\n\n        IDepositExecute depositHandler = IDepositExecute(handler);\n        bytes memory handlerResponse = depositHandler.deposit(resourceID, msg.sender, data);\n\n        emit Deposit(destinationDomainID, resourceID, depositNonce, msg.sender, data, handlerResponse);\n    }\n\n    /**\n        @notice When called, {msg.sender} will be marked as voting in favor of proposal.\n        @notice Only callable by relayers when Bridge is not paused.\n        @param domainID ID of chain deposit originated from.\n        @param depositNonce ID of deposited generated by origin Bridge contract.\n        @param data Data originally provided when deposit was made.\n        @notice Proposal must not have already been passed or executed.\n        @notice {msg.sender} must not have already voted on proposal.\n        @notice Emits {ProposalEvent} event with status indicating the proposal status.\n        @notice Emits {ProposalVote} event.\n     */\n    function voteProposal(uint8 domainID, uint64 depositNonce, bytes32 resourceID, bytes calldata data) external onlyRelayers whenNotPaused {\n        address handler = _resourceIDToHandlerAddress[resourceID];\n        uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(domainID);\n        bytes32 dataHash = keccak256(abi.encodePacked(handler, data));\n        Proposal memory proposal = _proposals[nonceAndID][dataHash];\n\n        require(_resourceIDToHandlerAddress[resourceID] != address(0), \"no handler for resourceID\");\n\n        if (proposal._status == ProposalStatus.Passed) {\n            executeProposal(domainID, depositNonce, data, resourceID, true);\n            return;\n        }\n        \n        require(uint(proposal._status) <= 1, \"proposal already executed/cancelled\");\n        require(!_hasVoted(proposal, msg.sender), \"relayer already voted\");\n\n        if (proposal._status == ProposalStatus.Inactive) {\n            proposal = Proposal({\n                _status : ProposalStatus.Active,\n                _yesVotes : 0,\n                _yesVotesTotal : 0,\n                _proposedBlock : uint40(block.number) // Overflow is desired.\n            });\n\n            emit ProposalEvent(domainID, depositNonce, ProposalStatus.Active, dataHash);\n        } else if (uint40(sub(block.number, proposal._proposedBlock)) > _expiry) {\n            // if the number of blocks that has passed since this proposal was\n            // submitted exceeds the expiry threshold set, cancel the proposal\n            proposal._status = ProposalStatus.Cancelled;\n\n            emit ProposalEvent(domainID, depositNonce, ProposalStatus.Cancelled, dataHash);\n        }\n\n        if (proposal._status != ProposalStatus.Cancelled) {\n            proposal._yesVotes = (proposal._yesVotes | _relayerBit(msg.sender)).toUint200();\n            proposal._yesVotesTotal++; // TODO: check if bit counting is cheaper.\n\n            emit ProposalVote(domainID, depositNonce, proposal._status, dataHash);\n\n            // Finalize if _relayerThreshold has been reached\n            if (proposal._yesVotesTotal >= _relayerThreshold) {\n                proposal._status = ProposalStatus.Passed;\n                emit ProposalEvent(domainID, depositNonce, ProposalStatus.Passed, dataHash);\n            }\n        }\n        _proposals[nonceAndID][dataHash] = proposal;\n\n        if (proposal._status == ProposalStatus.Passed) {\n            executeProposal(domainID, depositNonce, data, resourceID, false);\n        }\n    }\n\n    /**\n        @notice Cancels a deposit proposal that has not been executed yet.\n        @notice Only callable by relayers when Bridge is not paused.\n        @param domainID ID of chain deposit originated from.\n        @param depositNonce ID of deposited generated by origin Bridge contract.\n        @param dataHash Hash of data originally provided when deposit was made.\n        @notice Proposal must be past expiry threshold.\n        @notice Emits {ProposalEvent} event with status {Cancelled}.\n     */\n    function cancelProposal(uint8 domainID, uint64 depositNonce, bytes32 dataHash) public onlyAdminOrRelayer {\n        uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(domainID);\n        Proposal memory proposal = _proposals[nonceAndID][dataHash];\n        ProposalStatus currentStatus = proposal._status;\n\n        require(currentStatus == ProposalStatus.Active || currentStatus == ProposalStatus.Passed,\n            \"Proposal cannot be cancelled\");\n        require(uint40(sub(block.number, proposal._proposedBlock)) > _expiry, \"Proposal not at expiry threshold\");\n\n        proposal._status = ProposalStatus.Cancelled;\n        _proposals[nonceAndID][dataHash] = proposal;\n\n        emit ProposalEvent(domainID, depositNonce, ProposalStatus.Cancelled, dataHash);\n    }\n\n    /**\n        @notice Executes a deposit proposal that is considered passed using a specified handler contract.\n        @notice Only callable by relayers when Bridge is not paused.\n        @param domainID ID of chain deposit originated from.\n        @param resourceID ResourceID to be used when making deposits.\n        @param depositNonce ID of deposited generated by origin Bridge contract.\n        @param data Data originally provided when deposit was made.\n        @param revertOnFail Decision if the transaction should be reverted in case of handler's executeProposal is reverted or not.\n        @notice Proposal must have Passed status.\n        @notice Hash of {data} must equal proposal's {dataHash}.\n        @notice Emits {ProposalEvent} event with status {Executed}.\n        @notice Emits {FailedExecution} event with the failed reason.\n     */\n    function executeProposal(uint8 domainID, uint64 depositNonce, bytes calldata data, bytes32 resourceID, bool revertOnFail) public onlyRelayers whenNotPaused {\n        address handler = _resourceIDToHandlerAddress[resourceID];\n        uint72 nonceAndID = (uint72(depositNonce) << 8) | uint72(domainID);\n        bytes32 dataHash = keccak256(abi.encodePacked(handler, data));\n        Proposal storage proposal = _proposals[nonceAndID][dataHash];\n\n        require(proposal._status == ProposalStatus.Passed, \"Proposal must have Passed status\");\n\n        proposal._status = ProposalStatus.Executed;\n        IDepositExecute depositHandler = IDepositExecute(handler);\n\n        if (revertOnFail) {\n            depositHandler.executeProposal(resourceID, data);\n        } else {\n            try depositHandler.executeProposal(resourceID, data) {\n            } catch (bytes memory lowLevelData) {\n                proposal._status = ProposalStatus.Passed;\n                emit FailedHandlerExecution(lowLevelData);\n                return;\n            }\n        }\n        \n        emit ProposalEvent(domainID, depositNonce, ProposalStatus.Executed, dataHash);\n    }\n\n    /**\n        @notice Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1.\n        This means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\n        @param addrs Array of addresses to transfer {amounts} to.\n        @param amounts Array of amonuts to transfer to {addrs}.\n     */\n    function transferFunds(address payable[] calldata addrs, uint[] calldata amounts) external onlyAdmin {\n        for (uint256 i = 0; i < addrs.length; i++) {\n            addrs[i].transfer(amounts[i]);\n        }\n    }\n}\n",
  "sourcePath": "/home/sigo/w/deer/ethsub/packages/sol/contracts/Bridge.sol",
  "ast": {
    "absolutePath": "project:/contracts/Bridge.sol",
    "exportedSymbols": {
      "Bridge": [
        7346
      ]
    },
    "id": 7347,
    "license": "LGPL-3.0-only",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6124,
        "literals": [
          "solidity",
          "0.6",
          ".12"
        ],
        "nodeType": "PragmaDirective",
        "src": "42:23:34"
      },
      {
        "id": 6125,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "66:33:34"
      },
      {
        "absolutePath": "project:/contracts/utils/AccessControl.sol",
        "file": "./utils/AccessControl.sol",
        "id": 6126,
        "nodeType": "ImportDirective",
        "scope": 7347,
        "sourceUnit": 10150,
        "src": "101:35:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/utils/Pausable.sol",
        "file": "./utils/Pausable.sol",
        "id": 6127,
        "nodeType": "ImportDirective",
        "scope": 7347,
        "sourceUnit": 10251,
        "src": "137:30:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/utils/SafeMath.sol",
        "file": "./utils/SafeMath.sol",
        "id": 6128,
        "nodeType": "ImportDirective",
        "scope": 7347,
        "sourceUnit": 10391,
        "src": "168:30:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/utils/SafeCast.sol",
        "file": "./utils/SafeCast.sol",
        "id": 6129,
        "nodeType": "ImportDirective",
        "scope": 7347,
        "sourceUnit": 10342,
        "src": "199:30:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/IDepositExecute.sol",
        "file": "./interfaces/IDepositExecute.sol",
        "id": 6130,
        "nodeType": "ImportDirective",
        "scope": 7347,
        "sourceUnit": 9817,
        "src": "230:42:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/IERCHandler.sol",
        "file": "./interfaces/IERCHandler.sol",
        "id": 6131,
        "nodeType": "ImportDirective",
        "scope": 7347,
        "sourceUnit": 9841,
        "src": "273:38:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "project:/contracts/interfaces/IGenericHandler.sol",
        "file": "./interfaces/IGenericHandler.sol",
        "id": 6132,
        "nodeType": "ImportDirective",
        "scope": 7347,
        "sourceUnit": 9859,
        "src": "312:42:34",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6134,
              "name": "Pausable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10250,
              "src": "513:8:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Pausable_$10250",
                "typeString": "contract Pausable"
              }
            },
            "id": 6135,
            "nodeType": "InheritanceSpecifier",
            "src": "513:8:34"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6136,
              "name": "AccessControl",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10149,
              "src": "523:13:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_AccessControl_$10149",
                "typeString": "contract AccessControl"
              }
            },
            "id": 6137,
            "nodeType": "InheritanceSpecifier",
            "src": "523:13:34"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 6138,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10390,
              "src": "538:8:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$10390",
                "typeString": "contract SafeMath"
              }
            },
            "id": 6139,
            "nodeType": "InheritanceSpecifier",
            "src": "538:8:34"
          }
        ],
        "contractDependencies": [
          4841,
          10149,
          10250,
          10390
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 6133,
          "nodeType": "StructuredDocumentation",
          "src": "356:137:34",
          "text": "@title Facilitates deposits, creation and voting of deposit proposals, and deposit executions.\n@author ChainSafe Systems."
        },
        "fullyImplemented": true,
        "id": 7346,
        "linearizedBaseContracts": [
          7346,
          10390,
          10149,
          4841,
          10250
        ],
        "name": "Bridge",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 6141,
            "libraryName": {
              "contractScope": null,
              "id": 6140,
              "name": "SafeCast",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 10341,
              "src": "559:8:34",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeCast_$10341",
                "typeString": "library SafeCast"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "553:21:34",
            "typeName": null
          },
          {
            "constant": true,
            "functionSelector": "9debb3bd",
            "id": 6144,
            "mutability": "constant",
            "name": "MAX_RELAYERS",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7346,
            "src": "653:42:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 6142,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "653:7:34",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "323030",
              "id": 6143,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "692:3:34",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_200_by_1",
                "typeString": "int_const 200"
              },
              "value": "200"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "9dd694f4",
            "id": 6146,
            "mutability": "mutable",
            "name": "_domainID",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7346,
            "src": "702:24:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 6145,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "702:5:34",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "d7a9cd79",
            "id": 6148,
            "mutability": "mutable",
            "name": "_relayerThreshold",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7346,
            "src": "732:32:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint8",
              "typeString": "uint8"
            },
            "typeName": {
              "id": 6147,
              "name": "uint8",
              "nodeType": "ElementaryTypeName",
              "src": "732:5:34",
              "typeDescriptions": {
                "typeIdentifier": "t_uint8",
                "typeString": "uint8"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "c5b37c22",
            "id": 6150,
            "mutability": "mutable",
            "name": "_fee",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7346,
            "src": "770:19:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint128",
              "typeString": "uint128"
            },
            "typeName": {
              "id": 6149,
              "name": "uint128",
              "nodeType": "ElementaryTypeName",
              "src": "770:7:34",
              "typeDescriptions": {
                "typeIdentifier": "t_uint128",
                "typeString": "uint128"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "c5ec8970",
            "id": 6152,
            "mutability": "mutable",
            "name": "_expiry",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7346,
            "src": "795:22:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint40",
              "typeString": "uint40"
            },
            "typeName": {
              "id": 6151,
              "name": "uint40",
              "nodeType": "ElementaryTypeName",
              "src": "795:6:34",
              "typeDescriptions": {
                "typeIdentifier": "t_uint40",
                "typeString": "uint40"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "canonicalName": "Bridge.ProposalStatus",
            "id": 6158,
            "members": [
              {
                "id": 6153,
                "name": "Inactive",
                "nodeType": "EnumValue",
                "src": "845:8:34"
              },
              {
                "id": 6154,
                "name": "Active",
                "nodeType": "EnumValue",
                "src": "855:6:34"
              },
              {
                "id": 6155,
                "name": "Passed",
                "nodeType": "EnumValue",
                "src": "863:6:34"
              },
              {
                "id": 6156,
                "name": "Executed",
                "nodeType": "EnumValue",
                "src": "871:8:34"
              },
              {
                "id": 6157,
                "name": "Cancelled",
                "nodeType": "EnumValue",
                "src": "881:9:34"
              }
            ],
            "name": "ProposalStatus",
            "nodeType": "EnumDefinition",
            "src": "824:67:34"
          },
          {
            "canonicalName": "Bridge.Proposal",
            "id": 6167,
            "members": [
              {
                "constant": false,
                "id": 6160,
                "mutability": "mutable",
                "name": "_status",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6167,
                "src": "923:22:34",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                  "typeString": "enum Bridge.ProposalStatus"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 6159,
                  "name": "ProposalStatus",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6158,
                  "src": "923:14:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                    "typeString": "enum Bridge.ProposalStatus"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6162,
                "mutability": "mutable",
                "name": "_yesVotes",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6167,
                "src": "955:17:34",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint200",
                  "typeString": "uint200"
                },
                "typeName": {
                  "id": 6161,
                  "name": "uint200",
                  "nodeType": "ElementaryTypeName",
                  "src": "955:7:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint200",
                    "typeString": "uint200"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6164,
                "mutability": "mutable",
                "name": "_yesVotesTotal",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6167,
                "src": "1016:22:34",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 6163,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1016:5:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 6166,
                "mutability": "mutable",
                "name": "_proposedBlock",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6167,
                "src": "1048:22:34",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                },
                "typeName": {
                  "id": 6165,
                  "name": "uint40",
                  "nodeType": "ElementaryTypeName",
                  "src": "1048:6:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Proposal",
            "nodeType": "StructDefinition",
            "scope": 7346,
            "src": "897:211:34",
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "4b0b919d",
            "id": 6171,
            "mutability": "mutable",
            "name": "_depositCounts",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7346,
            "src": "1163:46:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$",
              "typeString": "mapping(uint8 => uint64)"
            },
            "typeName": {
              "id": 6170,
              "keyType": {
                "id": 6168,
                "name": "uint8",
                "nodeType": "ElementaryTypeName",
                "src": "1171:5:34",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                }
              },
              "nodeType": "Mapping",
              "src": "1163:24:34",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$",
                "typeString": "mapping(uint8 => uint64)"
              },
              "valueType": {
                "id": 6169,
                "name": "uint64",
                "nodeType": "ElementaryTypeName",
                "src": "1180:6:34",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "84db809f",
            "id": 6175,
            "mutability": "mutable",
            "name": "_resourceIDToHandlerAddress",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7346,
            "src": "1252:62:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 6174,
              "keyType": {
                "id": 6172,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1260:7:34",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1252:27:34",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 6173,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1271:7:34",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 6181,
            "mutability": "mutable",
            "name": "_proposals",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7346,
            "src": "1386:66:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$_$",
              "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal))"
            },
            "typeName": {
              "id": 6180,
              "keyType": {
                "id": 6176,
                "name": "uint72",
                "nodeType": "ElementaryTypeName",
                "src": "1394:6:34",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint72",
                  "typeString": "uint72"
                }
              },
              "nodeType": "Mapping",
              "src": "1386:47:34",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$_$",
                "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal))"
              },
              "valueType": {
                "id": 6179,
                "keyType": {
                  "id": 6177,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1412:7:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "nodeType": "Mapping",
                "src": "1404:28:34",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$",
                  "typeString": "mapping(bytes32 => struct Bridge.Proposal)"
                },
                "valueType": {
                  "contractScope": null,
                  "id": 6178,
                  "name": "Proposal",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6167,
                  "src": "1423:8:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proposal_$6167_storage_ptr",
                    "typeString": "struct Bridge.Proposal"
                  }
                }
              }
            },
            "value": null,
            "visibility": "private"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6185,
            "name": "RelayerThresholdChanged",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6184,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6183,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "newThreshold",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6185,
                  "src": "1489:20:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6182,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1489:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1488:22:34"
            },
            "src": "1459:52:34"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6189,
            "name": "RelayerAdded",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6188,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6187,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "relayer",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6189,
                  "src": "1535:15:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6186,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1535:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1534:17:34"
            },
            "src": "1516:36:34"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6193,
            "name": "RelayerRemoved",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6191,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "relayer",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6193,
                  "src": "1578:15:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6190,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1578:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1577:17:34"
            },
            "src": "1557:38:34"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6207,
            "name": "Deposit",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6206,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6195,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "destinationDomainID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6207,
                  "src": "1623:27:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 6194,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1623:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6197,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6207,
                  "src": "1660:18:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6196,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1660:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6199,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "depositNonce",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6207,
                  "src": "1688:20:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 6198,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1688:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6201,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "user",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6207,
                  "src": "1718:20:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6200,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1718:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6203,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6207,
                  "src": "1748:10:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6202,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1748:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6205,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "handlerResponse",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6207,
                  "src": "1768:21:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6204,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "1768:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1613:182:34"
            },
            "src": "1600:196:34"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6217,
            "name": "ProposalEvent",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6216,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6209,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "originDomainID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6217,
                  "src": "1830:29:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 6208,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1830:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6211,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "depositNonce",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6217,
                  "src": "1869:27:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 6210,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "1869:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6213,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6217,
                  "src": "1906:21:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                    "typeString": "enum Bridge.ProposalStatus"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6212,
                    "name": "ProposalStatus",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6158,
                    "src": "1906:14:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                      "typeString": "enum Bridge.ProposalStatus"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6215,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "dataHash",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6217,
                  "src": "1937:16:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6214,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1937:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1820:139:34"
            },
            "src": "1801:159:34"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6227,
            "name": "ProposalVote",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6226,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6219,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "originDomainID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6227,
                  "src": "1993:22:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 6218,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1993:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6221,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "depositNonce",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6227,
                  "src": "2025:20:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 6220,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "2025:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6223,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6227,
                  "src": "2055:21:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                    "typeString": "enum Bridge.ProposalStatus"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6222,
                    "name": "ProposalStatus",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6158,
                    "src": "2055:14:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                      "typeString": "enum Bridge.ProposalStatus"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6225,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "dataHash",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6227,
                  "src": "2086:16:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6224,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2086:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1983:125:34"
            },
            "src": "1965:144:34"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 6231,
            "name": "FailedHandlerExecution",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 6230,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6229,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "lowLevelData",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6231,
                  "src": "2152:18:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6228,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "2152:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2142:34:34"
            },
            "src": "2114:63:34"
          },
          {
            "constant": true,
            "functionSelector": "926d7d7f",
            "id": 6236,
            "mutability": "constant",
            "name": "RELAYER_ROLE",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 7346,
            "src": "2183:64:34",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bytes32",
              "typeString": "bytes32"
            },
            "typeName": {
              "id": 6232,
              "name": "bytes32",
              "nodeType": "ElementaryTypeName",
              "src": "2183:7:34",
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "value": {
              "argumentTypes": null,
              "arguments": [
                {
                  "argumentTypes": null,
                  "hexValue": "52454c415945525f524f4c45",
                  "id": 6234,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "2232:14:34",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4",
                    "typeString": "literal_string \"RELAYER_ROLE\""
                  },
                  "value": "RELAYER_ROLE"
                }
              ],
              "expression": {
                "argumentTypes": [
                  {
                    "typeIdentifier": "t_stringliteral_e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4",
                    "typeString": "literal_string \"RELAYER_ROLE\""
                  }
                ],
                "id": 6233,
                "name": "keccak256",
                "nodeType": "Identifier",
                "overloadedDeclarations": [],
                "referencedDeclaration": -8,
                "src": "2222:9:34",
                "typeDescriptions": {
                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                  "typeString": "function (bytes memory) pure returns (bytes32)"
                }
              },
              "id": 6235,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "functionCall",
              "lValueRequested": false,
              "names": [],
              "nodeType": "FunctionCall",
              "src": "2222:25:34",
              "tryCall": false,
              "typeDescriptions": {
                "typeIdentifier": "t_bytes32",
                "typeString": "bytes32"
              }
            },
            "visibility": "public"
          },
          {
            "body": {
              "id": 6242,
              "nodeType": "Block",
              "src": "2275:40:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6238,
                      "name": "_onlyAdmin",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6289,
                      "src": "2285:10:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 6239,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2285:12:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6240,
                  "nodeType": "ExpressionStatement",
                  "src": "2285:12:34"
                },
                {
                  "id": 6241,
                  "nodeType": "PlaceholderStatement",
                  "src": "2307:1:34"
                }
              ]
            },
            "documentation": null,
            "id": 6243,
            "name": "onlyAdmin",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 6237,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2272:2:34"
            },
            "src": "2254:61:34",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6249,
              "nodeType": "Block",
              "src": "2351:49:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6245,
                      "name": "_onlyAdminOrRelayer",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6276,
                      "src": "2361:19:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 6246,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2361:21:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6247,
                  "nodeType": "ExpressionStatement",
                  "src": "2361:21:34"
                },
                {
                  "id": 6248,
                  "nodeType": "PlaceholderStatement",
                  "src": "2392:1:34"
                }
              ]
            },
            "documentation": null,
            "id": 6250,
            "name": "onlyAdminOrRelayer",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 6244,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2348:2:34"
            },
            "src": "2321:79:34",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6256,
              "nodeType": "Block",
              "src": "2430:43:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6252,
                      "name": "_onlyRelayers",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6302,
                      "src": "2440:13:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$__$returns$__$",
                        "typeString": "function () view"
                      }
                    },
                    "id": 6253,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2440:15:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6254,
                  "nodeType": "ExpressionStatement",
                  "src": "2440:15:34"
                },
                {
                  "id": 6255,
                  "nodeType": "PlaceholderStatement",
                  "src": "2465:1:34"
                }
              ]
            },
            "documentation": null,
            "id": 6257,
            "name": "onlyRelayers",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 6251,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2427:2:34"
            },
            "src": "2406:67:34",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 6275,
              "nodeType": "Block",
              "src": "2523:148:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 6271,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6262,
                              "name": "DEFAULT_ADMIN_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9884,
                              "src": "2549:18:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6263,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2569:3:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6264,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2569:10:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 6261,
                            "name": "hasRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9921,
                            "src": "2541:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (bytes32,address) view returns (bool)"
                            }
                          },
                          "id": 6265,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2541:39:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6267,
                              "name": "RELAYER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6236,
                              "src": "2592:12:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6268,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2606:3:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6269,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2606:10:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 6266,
                            "name": "hasRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9921,
                            "src": "2584:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (bytes32,address) view returns (bool)"
                            }
                          },
                          "id": 6270,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2584:33:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2541:76:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "73656e646572206973206e6f742072656c61796572206f722061646d696e",
                        "id": 6272,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2631:32:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe",
                          "typeString": "literal_string \"sender is not relayer or admin\""
                        },
                        "value": "sender is not relayer or admin"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe",
                          "typeString": "literal_string \"sender is not relayer or admin\""
                        }
                      ],
                      "id": 6260,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2533:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6273,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2533:131:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6274,
                  "nodeType": "ExpressionStatement",
                  "src": "2533:131:34"
                }
              ]
            },
            "documentation": null,
            "id": 6276,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_onlyAdminOrRelayer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6258,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2507:2:34"
            },
            "returnParameters": {
              "id": 6259,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2523:0:34"
            },
            "scope": 7346,
            "src": "2479:192:34",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 6288,
              "nodeType": "Block",
              "src": "2712:99:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6281,
                            "name": "DEFAULT_ADMIN_ROLE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9884,
                            "src": "2738:18:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6282,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2758:3:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6283,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2758:10:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 6280,
                          "name": "hasRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9921,
                          "src": "2730:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) view returns (bool)"
                          }
                        },
                        "id": 6284,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2730:39:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "73656e64657220646f65736e277420686176652061646d696e20726f6c65",
                        "id": 6285,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2771:32:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205",
                          "typeString": "literal_string \"sender doesn't have admin role\""
                        },
                        "value": "sender doesn't have admin role"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205",
                          "typeString": "literal_string \"sender doesn't have admin role\""
                        }
                      ],
                      "id": 6279,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2722:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6286,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2722:82:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6287,
                  "nodeType": "ExpressionStatement",
                  "src": "2722:82:34"
                }
              ]
            },
            "documentation": null,
            "id": 6289,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_onlyAdmin",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6277,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2696:2:34"
            },
            "returnParameters": {
              "id": 6278,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2712:0:34"
            },
            "scope": 7346,
            "src": "2677:134:34",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 6301,
              "nodeType": "Block",
              "src": "2855:95:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6294,
                            "name": "RELAYER_ROLE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6236,
                            "src": "2881:12:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6295,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2895:3:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 6296,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2895:10:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 6293,
                          "name": "hasRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9921,
                          "src": "2873:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) view returns (bool)"
                          }
                        },
                        "id": 6297,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2873:33:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "73656e64657220646f65736e277420686176652072656c6179657220726f6c65",
                        "id": 6298,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2908:34:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4",
                          "typeString": "literal_string \"sender doesn't have relayer role\""
                        },
                        "value": "sender doesn't have relayer role"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4",
                          "typeString": "literal_string \"sender doesn't have relayer role\""
                        }
                      ],
                      "id": 6292,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2865:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2865:78:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6300,
                  "nodeType": "ExpressionStatement",
                  "src": "2865:78:34"
                }
              ]
            },
            "documentation": null,
            "id": 6302,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_onlyRelayers",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6290,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2839:2:34"
            },
            "returnParameters": {
              "id": 6291,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2855:0:34"
            },
            "scope": 7346,
            "src": "2817:133:34",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 6323,
              "nodeType": "Block",
              "src": "3021:98:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6321,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 6311,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3043:1:34",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "id": 6310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3038:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint256_$",
                          "typeString": "type(uint256)"
                        },
                        "typeName": {
                          "id": 6309,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3038:4:34",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 6312,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3038:7:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6316,
                              "name": "RELAYER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6236,
                              "src": "3086:12:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6317,
                              "name": "relayer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6304,
                              "src": "3100:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 6314,
                              "name": "AccessControl",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10149,
                              "src": "3053:13:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_AccessControl_$10149_$",
                                "typeString": "type(contract AccessControl)"
                              }
                            },
                            "id": 6315,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getRoleMemberIndex",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9982,
                            "src": "3053:32:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (bytes32,address) view returns (uint256)"
                            }
                          },
                          "id": 6318,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3053:55:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 6319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3110:1:34",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "id": 6313,
                        "name": "sub",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10361,
                        "src": "3049:3:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 6320,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3049:63:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3038:74:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 6308,
                  "id": 6322,
                  "nodeType": "Return",
                  "src": "3031:81:34"
                }
              ]
            },
            "documentation": null,
            "id": 6324,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_relayerBit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6305,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6304,
                  "mutability": "mutable",
                  "name": "relayer",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6324,
                  "src": "2977:15:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6303,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2977:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2976:17:34"
            },
            "returnParameters": {
              "id": 6308,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6307,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6324,
                  "src": "3015:4:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6306,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3015:4:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3014:6:34"
            },
            "scope": 7346,
            "src": "2956:163:34",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 6346,
              "nodeType": "Block",
              "src": "3214:77:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6344,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6341,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6334,
                                "name": "relayer",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6328,
                                "src": "3244:7:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 6333,
                              "name": "_relayerBit",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6324,
                              "src": "3232:11:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view returns (uint256)"
                              }
                            },
                            "id": 6335,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3232:20:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6338,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6326,
                                  "src": "3260:8:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                                    "typeString": "struct Bridge.Proposal memory"
                                  }
                                },
                                "id": 6339,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_yesVotes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6162,
                                "src": "3260:18:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint200",
                                  "typeString": "uint200"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint200",
                                  "typeString": "uint200"
                                }
                              ],
                              "id": 6337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3255:4:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 6336,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "3255:4:34",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6340,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3255:24:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3232:47:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "id": 6342,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "3231:49:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": ">",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 6343,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3283:1:34",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "3231:53:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 6332,
                  "id": 6345,
                  "nodeType": "Return",
                  "src": "3224:60:34"
                }
              ]
            },
            "documentation": null,
            "id": 6347,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_hasVoted",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6329,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6326,
                  "mutability": "mutable",
                  "name": "proposal",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6347,
                  "src": "3144:24:34",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                    "typeString": "struct Bridge.Proposal"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6325,
                    "name": "Proposal",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6167,
                    "src": "3144:8:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$6167_storage_ptr",
                      "typeString": "struct Bridge.Proposal"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6328,
                  "mutability": "mutable",
                  "name": "relayer",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6347,
                  "src": "3170:15:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6327,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3170:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3143:43:34"
            },
            "returnParameters": {
              "id": 6332,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6331,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6347,
                  "src": "3208:4:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6330,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3208:4:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3207:6:34"
            },
            "scope": 7346,
            "src": "3125:166:34",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "private"
          },
          {
            "body": {
              "id": 6409,
              "nodeType": "Block",
              "src": "3861:349:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6364,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6362,
                      "name": "_domainID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6146,
                      "src": "3871:9:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 6363,
                      "name": "domainID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6350,
                      "src": "3883:8:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "3871:20:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 6365,
                  "nodeType": "ExpressionStatement",
                  "src": "3871:20:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6366,
                      "name": "_relayerThreshold",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6148,
                      "src": "3901:17:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 6367,
                          "name": "initialRelayerThreshold",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6355,
                          "src": "3921:23:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "toUint8",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 10340,
                        "src": "3921:31:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256) pure returns (uint8)"
                        }
                      },
                      "id": 6369,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3921:33:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "3901:53:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 6371,
                  "nodeType": "ExpressionStatement",
                  "src": "3901:53:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6376,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6372,
                      "name": "_fee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6150,
                      "src": "3964:4:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 6373,
                          "name": "fee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6357,
                          "src": "3971:3:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6374,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "toUint128",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 10296,
                        "src": "3971:13:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256) pure returns (uint128)"
                        }
                      },
                      "id": 6375,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3971:15:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "3964:22:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 6377,
                  "nodeType": "ExpressionStatement",
                  "src": "3964:22:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6382,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6378,
                      "name": "_expiry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6152,
                      "src": "3996:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 6379,
                          "name": "expiry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6359,
                          "src": "4006:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6380,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "toUint40",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 10318,
                        "src": "4006:15:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint40_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256) pure returns (uint40)"
                        }
                      },
                      "id": 6381,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4006:17:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      }
                    },
                    "src": "3996:27:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint40",
                      "typeString": "uint40"
                    }
                  },
                  "id": 6383,
                  "nodeType": "ExpressionStatement",
                  "src": "3996:27:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6385,
                        "name": "DEFAULT_ADMIN_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9884,
                        "src": "4045:18:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 6386,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "4065:3:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 6387,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4065:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 6384,
                      "name": "_setupRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10084,
                      "src": "4034:10:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 6388,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4034:42:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6389,
                  "nodeType": "ExpressionStatement",
                  "src": "4034:42:34"
                },
                {
                  "body": {
                    "id": 6407,
                    "nodeType": "Block",
                    "src": "4136:68:34",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6401,
                              "name": "RELAYER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6236,
                              "src": "4160:12:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 6402,
                                "name": "initialRelayers",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6353,
                                "src": "4174:15:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 6404,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 6403,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6391,
                                "src": "4190:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4174:18:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 6400,
                            "name": "grantRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 10022,
                            "src": "4150:9:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 6405,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4150:43:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6406,
                        "nodeType": "ExpressionStatement",
                        "src": "4150:43:34"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 6396,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 6393,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6391,
                      "src": "4103:1:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6394,
                        "name": "initialRelayers",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6353,
                        "src": "4107:15:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 6395,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4107:22:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4103:26:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 6408,
                  "initializationExpression": {
                    "assignments": [
                      6391
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 6391,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 6408,
                        "src": "4092:9:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 6390,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4092:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 6392,
                    "initialValue": null,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4092:9:34"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 6398,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4131:3:34",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 6397,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6391,
                        "src": "4131:1:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 6399,
                    "nodeType": "ExpressionStatement",
                    "src": "4131:3:34"
                  },
                  "nodeType": "ForStatement",
                  "src": "4087:117:34"
                }
              ]
            },
            "documentation": {
              "id": 6348,
              "nodeType": "StructuredDocumentation",
              "src": "3297:427:34",
              "text": "@notice Initializes Bridge, creates and grants {msg.sender} the admin role,\ncreates and grants {initialRelayers} the relayer role.\n@param domainID ID of chain the Bridge contract exists on.\n@param initialRelayers Addresses that should be initially granted the relayer role.\n@param initialRelayerThreshold Number of votes needed for a deposit proposal to be considered passed."
            },
            "id": 6410,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [],
            "name": "",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6360,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6350,
                  "mutability": "mutable",
                  "name": "domainID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6410,
                  "src": "3742:14:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 6349,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "3742:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6353,
                  "mutability": "mutable",
                  "name": "initialRelayers",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6410,
                  "src": "3758:32:34",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 6351,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3758:7:34",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 6352,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3758:9:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6355,
                  "mutability": "mutable",
                  "name": "initialRelayerThreshold",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6410,
                  "src": "3792:31:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6354,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3792:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6357,
                  "mutability": "mutable",
                  "name": "fee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6410,
                  "src": "3825:11:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6356,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3825:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6359,
                  "mutability": "mutable",
                  "name": "expiry",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6410,
                  "src": "3838:14:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6358,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3838:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3741:112:34"
            },
            "returnParameters": {
              "id": 6361,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3861:0:34"
            },
            "scope": 7346,
            "src": "3729:481:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6431,
              "nodeType": "Block",
              "src": "4699:75:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 6423,
                            "name": "_proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6181,
                            "src": "4726:10:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$_$",
                              "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))"
                            }
                          },
                          "id": 6425,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 6424,
                            "name": "destNonce",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6413,
                            "src": "4737:9:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint72",
                              "typeString": "uint72"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "4726:21:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$",
                            "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                          }
                        },
                        "id": 6427,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 6426,
                          "name": "dataHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6415,
                          "src": "4748:8:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "4726:31:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$6167_storage",
                          "typeString": "struct Bridge.Proposal storage ref"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6428,
                        "name": "relayer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6417,
                        "src": "4759:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_struct$_Proposal_$6167_storage",
                          "typeString": "struct Bridge.Proposal storage ref"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6422,
                      "name": "_hasVoted",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6347,
                      "src": "4716:9:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_struct$_Proposal_$6167_memory_ptr_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (struct Bridge.Proposal memory,address) view returns (bool)"
                      }
                    },
                    "id": 6429,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4716:51:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 6421,
                  "id": 6430,
                  "nodeType": "Return",
                  "src": "4709:58:34"
                }
              ]
            },
            "documentation": {
              "id": 6411,
              "nodeType": "StructuredDocumentation",
              "src": "4216:370:34",
              "text": "@notice Returns true if {relayer} has voted on {destNonce} {dataHash} proposal.\n@notice Naming left unchanged for backward compatibility.\n@param destNonce destinationDomainID + depositNonce of the proposal.\n@param dataHash Hash of data to be provided when deposit proposal is executed.\n@param relayer Address to check."
            },
            "functionSelector": "7febe63f",
            "id": 6432,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_hasVotedOnProposal",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6418,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6413,
                  "mutability": "mutable",
                  "name": "destNonce",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6432,
                  "src": "4620:16:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint72",
                    "typeString": "uint72"
                  },
                  "typeName": {
                    "id": 6412,
                    "name": "uint72",
                    "nodeType": "ElementaryTypeName",
                    "src": "4620:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint72",
                      "typeString": "uint72"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6415,
                  "mutability": "mutable",
                  "name": "dataHash",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6432,
                  "src": "4638:16:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6414,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4638:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6417,
                  "mutability": "mutable",
                  "name": "relayer",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6432,
                  "src": "4656:15:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6416,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4656:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4619:53:34"
            },
            "returnParameters": {
              "id": 6421,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6420,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6432,
                  "src": "4693:4:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6419,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4693:4:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4692:6:34"
            },
            "scope": 7346,
            "src": "4591:183:34",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6445,
              "nodeType": "Block",
              "src": "4966:54:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6441,
                        "name": "RELAYER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6236,
                        "src": "4991:12:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6442,
                        "name": "relayer",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6435,
                        "src": "5005:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6440,
                      "name": "hasRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9921,
                      "src": "4983:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                        "typeString": "function (bytes32,address) view returns (bool)"
                      }
                    },
                    "id": 6443,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4983:30:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 6439,
                  "id": 6444,
                  "nodeType": "Return",
                  "src": "4976:37:34"
                }
              ]
            },
            "documentation": {
              "id": 6433,
              "nodeType": "StructuredDocumentation",
              "src": "4780:116:34",
              "text": "@notice Returns true if {relayer} has the relayer role.\n@param relayer Address to check."
            },
            "functionSelector": "541d5548",
            "id": 6446,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isRelayer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6436,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6435,
                  "mutability": "mutable",
                  "name": "relayer",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6446,
                  "src": "4920:15:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6434,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4920:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4919:17:34"
            },
            "returnParameters": {
              "id": 6439,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6438,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6446,
                  "src": "4960:4:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6437,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "4960:4:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4959:6:34"
            },
            "scope": 7346,
            "src": "4901:119:34",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6473,
              "nodeType": "Block",
              "src": "5331:178:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 6458,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6455,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "5349:3:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 6456,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "5349:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 6457,
                          "name": "newAdmin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6449,
                          "src": "5363:8:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "5349:22:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43616e6e6f742072656e6f756e6365206f6e6573656c66",
                        "id": 6459,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5373:25:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_ab1c5f98bafd089c448d0f437f7951a06dfd484be68434b4420ed4d39647c206",
                          "typeString": "literal_string \"Cannot renounce oneself\""
                        },
                        "value": "Cannot renounce oneself"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_ab1c5f98bafd089c448d0f437f7951a06dfd484be68434b4420ed4d39647c206",
                          "typeString": "literal_string \"Cannot renounce oneself\""
                        }
                      ],
                      "id": 6454,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "5341:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6460,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5341:58:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6461,
                  "nodeType": "ExpressionStatement",
                  "src": "5341:58:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6463,
                        "name": "DEFAULT_ADMIN_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9884,
                        "src": "5419:18:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6464,
                        "name": "newAdmin",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6449,
                        "src": "5439:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6462,
                      "name": "grantRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10022,
                      "src": "5409:9:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 6465,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5409:39:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6466,
                  "nodeType": "ExpressionStatement",
                  "src": "5409:39:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6468,
                        "name": "DEFAULT_ADMIN_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 9884,
                        "src": "5471:18:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 6469,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "5491:3:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 6470,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5491:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 6467,
                      "name": "renounceRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10070,
                      "src": "5458:12:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 6471,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5458:44:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6472,
                  "nodeType": "ExpressionStatement",
                  "src": "5458:44:34"
                }
              ]
            },
            "documentation": {
              "id": 6447,
              "nodeType": "StructuredDocumentation",
              "src": "5026:240:34",
              "text": "@notice Removes admin role from {msg.sender} and grants it to {newAdmin}.\n@notice Only callable by an address that currently has the admin role.\n@param newAdmin Address that admin role will be granted to."
            },
            "functionSelector": "5e1fab0f",
            "id": 6474,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6452,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6451,
                  "name": "onlyAdmin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6243,
                  "src": "5321:9:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5321:9:34"
              }
            ],
            "name": "renounceAdmin",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6450,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6449,
                  "mutability": "mutable",
                  "name": "newAdmin",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6474,
                  "src": "5294:16:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6448,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5294:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5293:18:34"
            },
            "returnParameters": {
              "id": 6453,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5331:0:34"
            },
            "scope": 7346,
            "src": "5271:238:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6483,
              "nodeType": "Block",
              "src": "5747:25:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6480,
                      "name": "_pause",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10233,
                      "src": "5757:6:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 6481,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5757:8:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6482,
                  "nodeType": "ExpressionStatement",
                  "src": "5757:8:34"
                }
              ]
            },
            "documentation": {
              "id": 6475,
              "nodeType": "StructuredDocumentation",
              "src": "5515:177:34",
              "text": "@notice Pauses deposits, proposal creation and voting, and deposit executions.\n@notice Only callable by an address that currently has the admin role."
            },
            "functionSelector": "80ae1c28",
            "id": 6484,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6478,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6477,
                  "name": "onlyAdmin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6243,
                  "src": "5737:9:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5737:9:34"
              }
            ],
            "name": "adminPauseTransfers",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6476,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5725:2:34"
            },
            "returnParameters": {
              "id": 6479,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5747:0:34"
            },
            "scope": 7346,
            "src": "5697:75:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6493,
              "nodeType": "Block",
              "src": "6014:27:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "id": 6490,
                      "name": "_unpause",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10249,
                      "src": "6024:8:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                        "typeString": "function ()"
                      }
                    },
                    "id": 6491,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6024:10:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6492,
                  "nodeType": "ExpressionStatement",
                  "src": "6024:10:34"
                }
              ]
            },
            "documentation": {
              "id": 6485,
              "nodeType": "StructuredDocumentation",
              "src": "5778:179:34",
              "text": "@notice Unpauses deposits, proposal creation and voting, and deposit executions.\n@notice Only callable by an address that currently has the admin role."
            },
            "functionSelector": "ffaac0eb",
            "id": 6494,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6488,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6487,
                  "name": "onlyAdmin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6243,
                  "src": "6004:9:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6004:9:34"
              }
            ],
            "name": "adminUnpauseTransfers",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6486,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5992:2:34"
            },
            "returnParameters": {
              "id": 6489,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6014:0:34"
            },
            "scope": 7346,
            "src": "5962:79:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6512,
              "nodeType": "Block",
              "src": "6443:111:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6506,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6502,
                      "name": "_relayerThreshold",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6148,
                      "src": "6453:17:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 6503,
                          "name": "newThreshold",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6497,
                          "src": "6473:12:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "toUint8",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 10340,
                        "src": "6473:20:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint8_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256) pure returns (uint8)"
                        }
                      },
                      "id": 6505,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "6473:22:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      }
                    },
                    "src": "6453:42:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "id": 6507,
                  "nodeType": "ExpressionStatement",
                  "src": "6453:42:34"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6509,
                        "name": "newThreshold",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6497,
                        "src": "6534:12:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 6508,
                      "name": "RelayerThresholdChanged",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6185,
                      "src": "6510:23:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 6510,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6510:37:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6511,
                  "nodeType": "EmitStatement",
                  "src": "6505:42:34"
                }
              ]
            },
            "documentation": {
              "id": 6495,
              "nodeType": "StructuredDocumentation",
              "src": "6047:313:34",
              "text": "@notice Modifies the number of votes required for a proposal to be considered passed.\n@notice Only callable by an address that currently has the admin role.\n@param newThreshold Value {_relayerThreshold} will be changed to.\n@notice Emits {RelayerThresholdChanged} event."
            },
            "functionSelector": "4e056005",
            "id": 6513,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6500,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6499,
                  "name": "onlyAdmin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6243,
                  "src": "6433:9:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6433:9:34"
              }
            ],
            "name": "adminChangeRelayerThreshold",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6498,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6497,
                  "mutability": "mutable",
                  "name": "newThreshold",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6513,
                  "src": "6402:20:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6496,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6402:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6401:22:34"
            },
            "returnParameters": {
              "id": 6501,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6443:0:34"
            },
            "scope": 7346,
            "src": "6365:189:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6545,
              "nodeType": "Block",
              "src": "6926:266:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6524,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "6944:38:34",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6521,
                              "name": "RELAYER_ROLE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6236,
                              "src": "6953:12:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6522,
                              "name": "relayerAddress",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6516,
                              "src": "6967:14:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 6520,
                            "name": "hasRole",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9921,
                            "src": "6945:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (bytes32,address) view returns (bool)"
                            }
                          },
                          "id": 6523,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6945:37:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6164647220616c7265616479206861732072656c6179657220726f6c6521",
                        "id": 6525,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "6984:32:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85",
                          "typeString": "literal_string \"addr already has relayer role!\""
                        },
                        "value": "addr already has relayer role!"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85",
                          "typeString": "literal_string \"addr already has relayer role!\""
                        }
                      ],
                      "id": 6519,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "6936:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6526,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6936:81:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6527,
                  "nodeType": "ExpressionStatement",
                  "src": "6936:81:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6532,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6529,
                            "name": "_totalRelayers",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6738,
                            "src": "7035:14:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint256_$",
                              "typeString": "function () view returns (uint256)"
                            }
                          },
                          "id": 6530,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7035:16:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 6531,
                          "name": "MAX_RELAYERS",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6144,
                          "src": "7054:12:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7035:31:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "72656c6179657273206c696d69742072656163686564",
                        "id": 6533,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7068:24:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_18af44d6fca7942c3eba189fa880127576a658eb0cb6b7b50f3633b08b5da89a",
                          "typeString": "literal_string \"relayers limit reached\""
                        },
                        "value": "relayers limit reached"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_18af44d6fca7942c3eba189fa880127576a658eb0cb6b7b50f3633b08b5da89a",
                          "typeString": "literal_string \"relayers limit reached\""
                        }
                      ],
                      "id": 6528,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7027:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6534,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7027:66:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6535,
                  "nodeType": "ExpressionStatement",
                  "src": "7027:66:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6537,
                        "name": "RELAYER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6236,
                        "src": "7113:12:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6538,
                        "name": "relayerAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6516,
                        "src": "7127:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6536,
                      "name": "grantRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10022,
                      "src": "7103:9:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 6539,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7103:39:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6540,
                  "nodeType": "ExpressionStatement",
                  "src": "7103:39:34"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6542,
                        "name": "relayerAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6516,
                        "src": "7170:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6541,
                      "name": "RelayerAdded",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6189,
                      "src": "7157:12:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 6543,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7157:28:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6544,
                  "nodeType": "EmitStatement",
                  "src": "7152:33:34"
                }
              ]
            },
            "documentation": {
              "id": 6514,
              "nodeType": "StructuredDocumentation",
              "src": "6560:303:34",
              "text": "@notice Grants {relayerAddress} the relayer role.\n@notice Only callable by an address that currently has the admin role, which is\nchecked in grantRole().\n@param relayerAddress Address of relayer to be added.\n@notice Emits {RelayerAdded} event."
            },
            "functionSelector": "cdb0f73a",
            "id": 6546,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "adminAddRelayer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6517,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6516,
                  "mutability": "mutable",
                  "name": "relayerAddress",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6546,
                  "src": "6893:22:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6515,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "6893:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6892:24:34"
            },
            "returnParameters": {
              "id": 6518,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6926:0:34"
            },
            "scope": 7346,
            "src": "6868:324:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6569,
              "nodeType": "Block",
              "src": "7573:193:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6554,
                            "name": "RELAYER_ROLE",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6236,
                            "src": "7599:12:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6555,
                            "name": "relayerAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6549,
                            "src": "7613:14:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 6553,
                          "name": "hasRole",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9921,
                          "src": "7591:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_bytes32_$_t_address_$returns$_t_bool_$",
                            "typeString": "function (bytes32,address) view returns (bool)"
                          }
                        },
                        "id": 6556,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7591:37:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6164647220646f65736e277420686176652072656c6179657220726f6c6521",
                        "id": 6557,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7630:33:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864",
                          "typeString": "literal_string \"addr doesn't have relayer role!\""
                        },
                        "value": "addr doesn't have relayer role!"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864",
                          "typeString": "literal_string \"addr doesn't have relayer role!\""
                        }
                      ],
                      "id": 6552,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "7583:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6558,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7583:81:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6559,
                  "nodeType": "ExpressionStatement",
                  "src": "7583:81:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6561,
                        "name": "RELAYER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6236,
                        "src": "7685:12:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6562,
                        "name": "relayerAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6549,
                        "src": "7699:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6560,
                      "name": "revokeRole",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 10048,
                      "src": "7674:10:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 6563,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7674:40:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6564,
                  "nodeType": "ExpressionStatement",
                  "src": "7674:40:34"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6566,
                        "name": "relayerAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6549,
                        "src": "7744:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6565,
                      "name": "RelayerRemoved",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6193,
                      "src": "7729:14:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address)"
                      }
                    },
                    "id": 6567,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7729:30:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6568,
                  "nodeType": "EmitStatement",
                  "src": "7724:35:34"
                }
              ]
            },
            "documentation": {
              "id": 6547,
              "nodeType": "StructuredDocumentation",
              "src": "7198:309:34",
              "text": "@notice Removes relayer role for {relayerAddress}.\n@notice Only callable by an address that currently has the admin role, which is\nchecked in revokeRole().\n@param relayerAddress Address of relayer to be removed.\n@notice Emits {RelayerRemoved} event."
            },
            "functionSelector": "9d82dd63",
            "id": 6570,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "adminRemoveRelayer",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6550,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6549,
                  "mutability": "mutable",
                  "name": "relayerAddress",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6570,
                  "src": "7540:22:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6548,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7540:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7539:24:34"
            },
            "returnParameters": {
              "id": 6551,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7573:0:34"
            },
            "scope": 7346,
            "src": "7512:254:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6601,
              "nodeType": "Block",
              "src": "8418:187:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6586,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 6582,
                        "name": "_resourceIDToHandlerAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6175,
                        "src": "8428:27:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 6584,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 6583,
                        "name": "resourceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6575,
                        "src": "8456:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8428:39:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 6585,
                      "name": "handlerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6573,
                      "src": "8470:14:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "8428:56:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 6587,
                  "nodeType": "ExpressionStatement",
                  "src": "8428:56:34"
                },
                {
                  "assignments": [
                    6589
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6589,
                      "mutability": "mutable",
                      "name": "handler",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6601,
                      "src": "8494:19:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERCHandler_$9840",
                        "typeString": "contract IERCHandler"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6588,
                        "name": "IERCHandler",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9840,
                        "src": "8494:11:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERCHandler_$9840",
                          "typeString": "contract IERCHandler"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6593,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6591,
                        "name": "handlerAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6573,
                        "src": "8528:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6590,
                      "name": "IERCHandler",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9840,
                      "src": "8516:11:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IERCHandler_$9840_$",
                        "typeString": "type(contract IERCHandler)"
                      }
                    },
                    "id": 6592,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8516:27:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERCHandler_$9840",
                      "typeString": "contract IERCHandler"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8494:49:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6597,
                        "name": "resourceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6575,
                        "src": "8573:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6598,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6577,
                        "src": "8585:12:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 6594,
                        "name": "handler",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6589,
                        "src": "8553:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERCHandler_$9840",
                          "typeString": "contract IERCHandler"
                        }
                      },
                      "id": 6596,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setResource",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9827,
                      "src": "8553:19:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address) external"
                      }
                    },
                    "id": 6599,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8553:45:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6600,
                  "nodeType": "ExpressionStatement",
                  "src": "8553:45:34"
                }
              ]
            },
            "documentation": {
              "id": 6571,
              "nodeType": "StructuredDocumentation",
              "src": "7772:530:34",
              "text": "@notice Sets a new resource for handler contracts that use the IERCHandler interface,\nand maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param resourceID ResourceID to be used when making deposits.\n@param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed."
            },
            "functionSelector": "cb10f215",
            "id": 6602,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6580,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6579,
                  "name": "onlyAdmin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6243,
                  "src": "8408:9:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "8408:9:34"
              }
            ],
            "name": "adminSetResource",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6578,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6573,
                  "mutability": "mutable",
                  "name": "handlerAddress",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6602,
                  "src": "8333:22:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6572,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8333:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6575,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6602,
                  "src": "8357:18:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6574,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8357:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6577,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6602,
                  "src": "8377:20:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6576,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8377:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8332:66:34"
            },
            "returnParameters": {
              "id": 6581,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8418:0:34"
            },
            "scope": 7346,
            "src": "8307:298:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6642,
              "nodeType": "Block",
              "src": "9422:270:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 6620,
                        "name": "_resourceIDToHandlerAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6175,
                        "src": "9432:27:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 6622,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 6621,
                        "name": "resourceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6607,
                        "src": "9460:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "9432:39:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 6623,
                      "name": "handlerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6605,
                      "src": "9474:14:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "src": "9432:56:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 6625,
                  "nodeType": "ExpressionStatement",
                  "src": "9432:56:34"
                },
                {
                  "assignments": [
                    6627
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6627,
                      "mutability": "mutable",
                      "name": "handler",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6642,
                      "src": "9498:23:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IGenericHandler_$9858",
                        "typeString": "contract IGenericHandler"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6626,
                        "name": "IGenericHandler",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9858,
                        "src": "9498:15:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IGenericHandler_$9858",
                          "typeString": "contract IGenericHandler"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6631,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6629,
                        "name": "handlerAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6605,
                        "src": "9540:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6628,
                      "name": "IGenericHandler",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9858,
                      "src": "9524:15:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IGenericHandler_$9858_$",
                        "typeString": "type(contract IGenericHandler)"
                      }
                    },
                    "id": 6630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9524:31:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IGenericHandler_$9858",
                      "typeString": "contract IGenericHandler"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9498:57:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6635,
                        "name": "resourceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6607,
                        "src": "9585:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6636,
                        "name": "contractAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6609,
                        "src": "9597:15:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6637,
                        "name": "depositFunctionSig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6611,
                        "src": "9614:18:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6638,
                        "name": "depositFunctionDepositerOffset",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6613,
                        "src": "9634:30:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6639,
                        "name": "executeFunctionSig",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6615,
                        "src": "9666:18:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bytes4",
                          "typeString": "bytes4"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 6632,
                        "name": "handler",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6627,
                        "src": "9565:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IGenericHandler_$9858",
                          "typeString": "contract IGenericHandler"
                        }
                      },
                      "id": 6634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setResource",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9857,
                      "src": "9565:19:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_bytes4_$_t_uint256_$_t_bytes4_$returns$__$",
                        "typeString": "function (bytes32,address,bytes4,uint256,bytes4) external"
                      }
                    },
                    "id": 6640,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9565:120:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6641,
                  "nodeType": "ExpressionStatement",
                  "src": "9565:120:34"
                }
              ]
            },
            "documentation": {
              "id": 6603,
              "nodeType": "StructuredDocumentation",
              "src": "8611:537:34",
              "text": "@notice Sets a new resource for handler contracts that use the IGenericHandler interface,\nand maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed."
            },
            "functionSelector": "5a1ad87c",
            "id": 6643,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6618,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6617,
                  "name": "onlyAdmin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6243,
                  "src": "9412:9:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9412:9:34"
              }
            ],
            "name": "adminSetGenericResource",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6605,
                  "mutability": "mutable",
                  "name": "handlerAddress",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6643,
                  "src": "9195:22:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6604,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9195:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6607,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6643,
                  "src": "9227:18:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6606,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9227:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6609,
                  "mutability": "mutable",
                  "name": "contractAddress",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6643,
                  "src": "9255:23:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6608,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "9255:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6611,
                  "mutability": "mutable",
                  "name": "depositFunctionSig",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6643,
                  "src": "9288:25:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 6610,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "9288:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6613,
                  "mutability": "mutable",
                  "name": "depositFunctionDepositerOffset",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6643,
                  "src": "9323:38:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6612,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "9323:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6615,
                  "mutability": "mutable",
                  "name": "executeFunctionSig",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6643,
                  "src": "9371:25:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  },
                  "typeName": {
                    "id": 6614,
                    "name": "bytes4",
                    "nodeType": "ElementaryTypeName",
                    "src": "9371:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes4",
                      "typeString": "bytes4"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9185:217:34"
            },
            "returnParameters": {
              "id": 6619,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "9422:0:34"
            },
            "scope": 7346,
            "src": "9153:539:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6665,
              "nodeType": "Block",
              "src": "10174:109:34",
              "statements": [
                {
                  "assignments": [
                    6654
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6654,
                      "mutability": "mutable",
                      "name": "handler",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6665,
                      "src": "10184:19:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERCHandler_$9840",
                        "typeString": "contract IERCHandler"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6653,
                        "name": "IERCHandler",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9840,
                        "src": "10184:11:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERCHandler_$9840",
                          "typeString": "contract IERCHandler"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6658,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6656,
                        "name": "handlerAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6646,
                        "src": "10218:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6655,
                      "name": "IERCHandler",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9840,
                      "src": "10206:11:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IERCHandler_$9840_$",
                        "typeString": "type(contract IERCHandler)"
                      }
                    },
                    "id": 6657,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10206:27:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERCHandler_$9840",
                      "typeString": "contract IERCHandler"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10184:49:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6662,
                        "name": "tokenAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6648,
                        "src": "10263:12:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 6659,
                        "name": "handler",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6654,
                        "src": "10243:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERCHandler_$9840",
                          "typeString": "contract IERCHandler"
                        }
                      },
                      "id": 6661,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setBurnable",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9833,
                      "src": "10243:19:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                        "typeString": "function (address) external"
                      }
                    },
                    "id": 6663,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10243:33:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6664,
                  "nodeType": "ExpressionStatement",
                  "src": "10243:33:34"
                }
              ]
            },
            "documentation": {
              "id": 6644,
              "nodeType": "StructuredDocumentation",
              "src": "9698:380:34",
              "text": "@notice Sets a resource as burnable for handler contracts that use the IERCHandler interface.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed."
            },
            "functionSelector": "8c0c2631",
            "id": 6666,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6651,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6650,
                  "name": "onlyAdmin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6243,
                  "src": "10164:9:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10164:9:34"
              }
            ],
            "name": "adminSetBurnable",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6649,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6646,
                  "mutability": "mutable",
                  "name": "handlerAddress",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6666,
                  "src": "10109:22:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6645,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10109:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6648,
                  "mutability": "mutable",
                  "name": "tokenAddress",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6666,
                  "src": "10133:20:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6647,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10133:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10108:46:34"
            },
            "returnParameters": {
              "id": 6652,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10174:0:34"
            },
            "scope": 7346,
            "src": "10083:200:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6691,
              "nodeType": "Block",
              "src": "10625:142:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        "id": 6681,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6677,
                          "name": "nonce",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6671,
                          "src": "10643:5:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 6678,
                            "name": "_depositCounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6171,
                            "src": "10651:14:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$",
                              "typeString": "mapping(uint8 => uint64)"
                            }
                          },
                          "id": 6680,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 6679,
                            "name": "domainID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6669,
                            "src": "10666:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "10651:24:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "10643:32:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "446f6573206e6f7420616c6c6f772064656372656d656e7473206f6620746865206e6f6e6365",
                        "id": 6682,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10677:40:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7122f19c70cb188c6a2cee5166a6322c6e1f2aa7931cca0265fb30152aec34e8",
                          "typeString": "literal_string \"Does not allow decrements of the nonce\""
                        },
                        "value": "Does not allow decrements of the nonce"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7122f19c70cb188c6a2cee5166a6322c6e1f2aa7931cca0265fb30152aec34e8",
                          "typeString": "literal_string \"Does not allow decrements of the nonce\""
                        }
                      ],
                      "id": 6676,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "10635:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6683,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10635:83:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6684,
                  "nodeType": "ExpressionStatement",
                  "src": "10635:83:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 6685,
                        "name": "_depositCounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6171,
                        "src": "10728:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$",
                          "typeString": "mapping(uint8 => uint64)"
                        }
                      },
                      "id": 6687,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 6686,
                        "name": "domainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6669,
                        "src": "10743:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "10728:24:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 6688,
                      "name": "nonce",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6671,
                      "src": "10755:5:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "src": "10728:32:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "id": 6690,
                  "nodeType": "ExpressionStatement",
                  "src": "10728:32:34"
                }
              ]
            },
            "documentation": {
              "id": 6667,
              "nodeType": "StructuredDocumentation",
              "src": "10289:252:34",
              "text": "@notice Sets the nonce for the specific domainID.\n@notice Only callable by an address that currently has the admin role.\n@param domainID Domain ID for increasing nonce.\n@param nonce The nonce value to be set."
            },
            "functionSelector": "edc20c3c",
            "id": 6692,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6674,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6673,
                  "name": "onlyAdmin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6243,
                  "src": "10615:9:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "10615:9:34"
              }
            ],
            "name": "adminSetDepositNonce",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6672,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6669,
                  "mutability": "mutable",
                  "name": "domainID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6692,
                  "src": "10576:14:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 6668,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "10576:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6671,
                  "mutability": "mutable",
                  "name": "nonce",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6692,
                  "src": "10592:12:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 6670,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "10592:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10575:30:34"
            },
            "returnParameters": {
              "id": 6675,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "10625:0:34"
            },
            "scope": 7346,
            "src": "10546:221:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6725,
              "nodeType": "Block",
              "src": "11473:138:34",
              "statements": [
                {
                  "assignments": [
                    6705
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6705,
                      "mutability": "mutable",
                      "name": "nonceAndID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6725,
                      "src": "11483:17:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint72",
                        "typeString": "uint72"
                      },
                      "typeName": {
                        "id": 6704,
                        "name": "uint72",
                        "nodeType": "ElementaryTypeName",
                        "src": "11483:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint72",
                          "typeString": "uint72"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6718,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint72",
                      "typeString": "uint72"
                    },
                    "id": 6717,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          },
                          "id": 6711,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6708,
                                "name": "depositNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6697,
                                "src": "11511:12:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "id": 6707,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11504:6:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint72_$",
                                "typeString": "type(uint72)"
                              },
                              "typeName": {
                                "id": 6706,
                                "name": "uint72",
                                "nodeType": "ElementaryTypeName",
                                "src": "11504:6:34",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6709,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11504:20:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint72",
                              "typeString": "uint72"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 6710,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11528:1:34",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "src": "11504:25:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          }
                        }
                      ],
                      "id": 6712,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "11503:27:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint72",
                        "typeString": "uint72"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "|",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6715,
                          "name": "originDomainID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6695,
                          "src": "11540:14:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "id": 6714,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "11533:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint72_$",
                          "typeString": "type(uint72)"
                        },
                        "typeName": {
                          "id": 6713,
                          "name": "uint72",
                          "nodeType": "ElementaryTypeName",
                          "src": "11533:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 6716,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11533:22:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint72",
                        "typeString": "uint72"
                      }
                    },
                    "src": "11503:52:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint72",
                      "typeString": "uint72"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11483:72:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 6719,
                        "name": "_proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6181,
                        "src": "11572:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$_$",
                          "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))"
                        }
                      },
                      "id": 6721,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 6720,
                        "name": "nonceAndID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6705,
                        "src": "11583:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint72",
                          "typeString": "uint72"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "11572:22:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$",
                        "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                      }
                    },
                    "id": 6723,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 6722,
                      "name": "dataHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6699,
                      "src": "11595:8:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "11572:32:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$6167_storage",
                      "typeString": "struct Bridge.Proposal storage ref"
                    }
                  },
                  "functionReturnParameters": 6703,
                  "id": 6724,
                  "nodeType": "Return",
                  "src": "11565:39:34"
                }
              ]
            },
            "documentation": {
              "id": 6693,
              "nodeType": "StructuredDocumentation",
              "src": "10773:573:34",
              "text": "@notice Returns a proposal.\n@param originDomainID Chain ID deposit originated from.\n@param depositNonce ID of proposal generated by proposal's origin Bridge contract.\n@param dataHash Hash of data to be provided when deposit proposal is executed.\n@return Proposal which consists of:\n- _dataHash Hash of data to be provided when deposit proposal is executed.\n- _yesVotes Number of votes in favor of proposal.\n- _noVotes Number of votes against proposal.\n- _status Current status of proposal."
            },
            "functionSelector": "a9cf69fa",
            "id": 6726,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getProposal",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6700,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6695,
                  "mutability": "mutable",
                  "name": "originDomainID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6726,
                  "src": "11372:20:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 6694,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "11372:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6697,
                  "mutability": "mutable",
                  "name": "depositNonce",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6726,
                  "src": "11394:19:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 6696,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "11394:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6699,
                  "mutability": "mutable",
                  "name": "dataHash",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6726,
                  "src": "11415:16:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6698,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "11415:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11371:61:34"
            },
            "returnParameters": {
              "id": 6703,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6702,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6726,
                  "src": "11456:15:34",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                    "typeString": "struct Bridge.Proposal"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 6701,
                    "name": "Proposal",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 6167,
                    "src": "11456:8:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$6167_storage_ptr",
                      "typeString": "struct Bridge.Proposal"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11455:17:34"
            },
            "scope": 7346,
            "src": "11351:260:34",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6737,
              "nodeType": "Block",
              "src": "11784:70:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6734,
                        "name": "RELAYER_ROLE",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6236,
                        "src": "11834:12:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 6732,
                        "name": "AccessControl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 10149,
                        "src": "11801:13:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_AccessControl_$10149_$",
                          "typeString": "type(contract AccessControl)"
                        }
                      },
                      "id": 6733,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getRoleMemberCount",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9937,
                      "src": "11801:32:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_view$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) view returns (uint256)"
                      }
                    },
                    "id": 6735,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11801:46:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 6731,
                  "id": 6736,
                  "nodeType": "Return",
                  "src": "11794:53:34"
                }
              ]
            },
            "documentation": {
              "id": 6727,
              "nodeType": "StructuredDocumentation",
              "src": "11617:109:34",
              "text": "@notice Returns total relayers number.\n@notice Added for backwards compatibility."
            },
            "functionSelector": "802aabe8",
            "id": 6738,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "_totalRelayers",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6728,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "11754:2:34"
            },
            "returnParameters": {
              "id": 6731,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6730,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6738,
                  "src": "11778:4:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6729,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "11778:4:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "11777:6:34"
            },
            "scope": 7346,
            "src": "11731:123:34",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 6759,
              "nodeType": "Block",
              "src": "12067:110:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6747,
                          "name": "_fee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6150,
                          "src": "12085:4:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 6748,
                          "name": "newFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6741,
                          "src": "12093:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12085:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "43757272656e742066656520697320657175616c20746f206e657720666565",
                        "id": 6750,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "12101:33:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133",
                          "typeString": "literal_string \"Current fee is equal to new fee\""
                        },
                        "value": "Current fee is equal to new fee"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133",
                          "typeString": "literal_string \"Current fee is equal to new fee\""
                        }
                      ],
                      "id": 6746,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "12077:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6751,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12077:58:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6752,
                  "nodeType": "ExpressionStatement",
                  "src": "12077:58:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 6757,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 6753,
                      "name": "_fee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6150,
                      "src": "12145:4:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [],
                      "expression": {
                        "argumentTypes": [],
                        "expression": {
                          "argumentTypes": null,
                          "id": 6754,
                          "name": "newFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6741,
                          "src": "12152:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6755,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "toUint128",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 10296,
                        "src": "12152:16:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint128_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256) pure returns (uint128)"
                        }
                      },
                      "id": 6756,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "12152:18:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint128",
                        "typeString": "uint128"
                      }
                    },
                    "src": "12145:25:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint128",
                      "typeString": "uint128"
                    }
                  },
                  "id": 6758,
                  "nodeType": "ExpressionStatement",
                  "src": "12145:25:34"
                }
              ]
            },
            "documentation": {
              "id": 6739,
              "nodeType": "StructuredDocumentation",
              "src": "11860:143:34",
              "text": "@notice Changes deposit fee.\n@notice Only callable by admin.\n@param newFee Value {_fee} will be updated to."
            },
            "functionSelector": "91c404ac",
            "id": 6760,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6744,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6743,
                  "name": "onlyAdmin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6243,
                  "src": "12057:9:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12057:9:34"
              }
            ],
            "name": "adminChangeFee",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6742,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6741,
                  "mutability": "mutable",
                  "name": "newFee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6760,
                  "src": "12032:14:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6740,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "12032:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12031:16:34"
            },
            "returnParameters": {
              "id": 6745,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12067:0:34"
            },
            "scope": 7346,
            "src": "12008:169:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6782,
              "nodeType": "Block",
              "src": "12522:98:34",
              "statements": [
                {
                  "assignments": [
                    6771
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6771,
                      "mutability": "mutable",
                      "name": "handler",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6782,
                      "src": "12532:19:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IERCHandler_$9840",
                        "typeString": "contract IERCHandler"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6770,
                        "name": "IERCHandler",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9840,
                        "src": "12532:11:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERCHandler_$9840",
                          "typeString": "contract IERCHandler"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6775,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6773,
                        "name": "handlerAddress",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6763,
                        "src": "12566:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6772,
                      "name": "IERCHandler",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9840,
                      "src": "12554:11:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IERCHandler_$9840_$",
                        "typeString": "type(contract IERCHandler)"
                      }
                    },
                    "id": 6774,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12554:27:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERCHandler_$9840",
                      "typeString": "contract IERCHandler"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "12532:49:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6779,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6765,
                        "src": "12608:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 6776,
                        "name": "handler",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6771,
                        "src": "12591:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IERCHandler_$9840",
                          "typeString": "contract IERCHandler"
                        }
                      },
                      "id": 6778,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9839,
                      "src": "12591:16:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (bytes memory) external"
                      }
                    },
                    "id": 6780,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "12591:22:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6781,
                  "nodeType": "ExpressionStatement",
                  "src": "12591:22:34"
                }
              ]
            },
            "documentation": {
              "id": 6761,
              "nodeType": "StructuredDocumentation",
              "src": "12183:227:34",
              "text": "@notice Used to manually withdraw funds from ERC safes.\n@param handlerAddress Address of handler to withdraw from.\n@param data ABI-encoded withdrawal params relevant to the specified handler."
            },
            "functionSelector": "bd2a1820",
            "id": 6783,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6768,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6767,
                  "name": "onlyAdmin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6243,
                  "src": "12512:9:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "12512:9:34"
              }
            ],
            "name": "adminWithdraw",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6766,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6763,
                  "mutability": "mutable",
                  "name": "handlerAddress",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6783,
                  "src": "12447:22:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6762,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "12447:7:34",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6765,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6783,
                  "src": "12479:17:34",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_memory_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6764,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "12479:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "12437:65:34"
            },
            "returnParameters": {
              "id": 6769,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "12522:0:34"
            },
            "scope": 7346,
            "src": "12415:205:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 6852,
              "nodeType": "Block",
              "src": "13502:549:34",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6799,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 6796,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "13520:3:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 6797,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "13520:9:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 6798,
                          "name": "_fee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6150,
                          "src": "13533:4:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint128",
                            "typeString": "uint128"
                          }
                        },
                        "src": "13520:17:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "496e636f72726563742066656520737570706c696564",
                        "id": 6800,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13539:24:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5",
                          "typeString": "literal_string \"Incorrect fee supplied\""
                        },
                        "value": "Incorrect fee supplied"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5",
                          "typeString": "literal_string \"Incorrect fee supplied\""
                        }
                      ],
                      "id": 6795,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "13512:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6801,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13512:52:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6802,
                  "nodeType": "ExpressionStatement",
                  "src": "13512:52:34"
                },
                {
                  "assignments": [
                    6804
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6804,
                      "mutability": "mutable",
                      "name": "handler",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6852,
                      "src": "13575:15:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6803,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13575:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6808,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 6805,
                      "name": "_resourceIDToHandlerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6175,
                      "src": "13593:27:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 6807,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 6806,
                      "name": "resourceID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6788,
                      "src": "13621:10:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "13593:39:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13575:57:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 6815,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6810,
                          "name": "handler",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6804,
                          "src": "13650:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6813,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13669:1:34",
                              "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": 6812,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "13661:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 6811,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "13661:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 6814,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13661:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "13650:21:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7265736f757263654944206e6f74206d617070656420746f2068616e646c6572",
                        "id": 6816,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "13673:34:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52",
                          "typeString": "literal_string \"resourceID not mapped to handler\""
                        },
                        "value": "resourceID not mapped to handler"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52",
                          "typeString": "literal_string \"resourceID not mapped to handler\""
                        }
                      ],
                      "id": 6809,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "13642:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6817,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13642:66:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6818,
                  "nodeType": "ExpressionStatement",
                  "src": "13642:66:34"
                },
                {
                  "assignments": [
                    6820
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6820,
                      "mutability": "mutable",
                      "name": "depositNonce",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6852,
                      "src": "13719:19:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 6819,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "13719:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6825,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 6824,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "++",
                    "prefix": true,
                    "src": "13741:37:34",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 6821,
                        "name": "_depositCounts",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6171,
                        "src": "13743:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint8_$_t_uint64_$",
                          "typeString": "mapping(uint8 => uint64)"
                        }
                      },
                      "id": 6823,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 6822,
                        "name": "destinationDomainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6786,
                        "src": "13758:19:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "13743:35:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13719:59:34"
                },
                {
                  "assignments": [
                    6827
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6827,
                      "mutability": "mutable",
                      "name": "depositHandler",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6852,
                      "src": "13789:30:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IDepositExecute_$9816",
                        "typeString": "contract IDepositExecute"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6826,
                        "name": "IDepositExecute",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9816,
                        "src": "13789:15:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDepositExecute_$9816",
                          "typeString": "contract IDepositExecute"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6831,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6829,
                        "name": "handler",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6804,
                        "src": "13838:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 6828,
                      "name": "IDepositExecute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9816,
                      "src": "13822:15:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IDepositExecute_$9816_$",
                        "typeString": "type(contract IDepositExecute)"
                      }
                    },
                    "id": 6830,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13822:24:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDepositExecute_$9816",
                      "typeString": "contract IDepositExecute"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13789:57:34"
                },
                {
                  "assignments": [
                    6833
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6833,
                      "mutability": "mutable",
                      "name": "handlerResponse",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6852,
                      "src": "13856:28:34",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 6832,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "13856:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6841,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6836,
                        "name": "resourceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6788,
                        "src": "13910:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 6837,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "13922:3:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 6838,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "13922:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6839,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6790,
                        "src": "13934:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 6834,
                        "name": "depositHandler",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6827,
                        "src": "13887:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDepositExecute_$9816",
                          "typeString": "contract IDepositExecute"
                        }
                      },
                      "id": 6835,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "deposit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 9807,
                      "src": "13887:22:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_bytes_memory_ptr_$returns$_t_bytes_memory_ptr_$",
                        "typeString": "function (bytes32,address,bytes memory) external returns (bytes memory)"
                      }
                    },
                    "id": 6840,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13887:52:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_memory_ptr",
                      "typeString": "bytes memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "13856:83:34"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6843,
                        "name": "destinationDomainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6786,
                        "src": "13963:19:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6844,
                        "name": "resourceID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6788,
                        "src": "13984:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6845,
                        "name": "depositNonce",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6820,
                        "src": "13996:12:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 6846,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "14010:3:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 6847,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "14010:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6848,
                        "name": "data",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6790,
                        "src": "14022:4:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 6849,
                        "name": "handlerResponse",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6833,
                        "src": "14028:15:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes_calldata_ptr",
                          "typeString": "bytes calldata"
                        },
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 6842,
                      "name": "Deposit",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6207,
                      "src": "13955:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_bytes32_$_t_uint64_$_t_address_$_t_bytes_memory_ptr_$_t_bytes_memory_ptr_$returns$__$",
                        "typeString": "function (uint8,bytes32,uint64,address,bytes memory,bytes memory)"
                      }
                    },
                    "id": 6850,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "13955:89:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6851,
                  "nodeType": "EmitStatement",
                  "src": "13950:94:34"
                }
              ]
            },
            "documentation": {
              "id": 6784,
              "nodeType": "StructuredDocumentation",
              "src": "12626:755:34",
              "text": "@notice Initiates a transfer using a specified handler contract.\n@notice Only callable when Bridge is not paused.\n@param destinationDomainID ID of chain deposit will be bridged to.\n@param resourceID ResourceID used to find address of handler to be used for deposit.\n@param data Additional data to be passed to specified handler.\n@notice Emits {Deposit} event with all necessary parameters and a handler response.\n- ERC20Handler: responds with an empty data.\n- ERC721Handler: responds with the deposited token metadata acquired by calling a tokenURI method in the token contract.\n- GenericHandler: responds with the raw bytes returned from the call to the target contract."
            },
            "functionSelector": "05e2ca17",
            "id": 6853,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6793,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6792,
                  "name": "whenNotPaused",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10190,
                  "src": "13488:13:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "13488:13:34"
              }
            ],
            "name": "deposit",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6791,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6786,
                  "mutability": "mutable",
                  "name": "destinationDomainID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6853,
                  "src": "13403:25:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 6785,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "13403:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6788,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6853,
                  "src": "13430:18:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6787,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "13430:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6790,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 6853,
                  "src": "13450:19:34",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6789,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "13450:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "13402:68:34"
            },
            "returnParameters": {
              "id": 6794,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "13502:0:34"
            },
            "scope": 7346,
            "src": "13386:665:34",
            "stateMutability": "payable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7093,
              "nodeType": "Block",
              "src": "14851:2343:34",
              "statements": [
                {
                  "assignments": [
                    6870
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6870,
                      "mutability": "mutable",
                      "name": "handler",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7093,
                      "src": "14861:15:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6869,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "14861:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6874,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 6871,
                      "name": "_resourceIDToHandlerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6175,
                      "src": "14879:27:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 6873,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 6872,
                      "name": "resourceID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6860,
                      "src": "14907:10:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "14879:39:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14861:57:34"
                },
                {
                  "assignments": [
                    6876
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6876,
                      "mutability": "mutable",
                      "name": "nonceAndID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7093,
                      "src": "14928:17:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint72",
                        "typeString": "uint72"
                      },
                      "typeName": {
                        "id": 6875,
                        "name": "uint72",
                        "nodeType": "ElementaryTypeName",
                        "src": "14928:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint72",
                          "typeString": "uint72"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6889,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint72",
                      "typeString": "uint72"
                    },
                    "id": 6888,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          },
                          "id": 6882,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6879,
                                "name": "depositNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6858,
                                "src": "14956:12:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "id": 6878,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14949:6:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint72_$",
                                "typeString": "type(uint72)"
                              },
                              "typeName": {
                                "id": 6877,
                                "name": "uint72",
                                "nodeType": "ElementaryTypeName",
                                "src": "14949:6:34",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6880,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14949:20:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint72",
                              "typeString": "uint72"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 6881,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14973:1:34",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "src": "14949:25:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          }
                        }
                      ],
                      "id": 6883,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "14948:27:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint72",
                        "typeString": "uint72"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "|",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 6886,
                          "name": "domainID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6856,
                          "src": "14985:8:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "id": 6885,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "14978:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint72_$",
                          "typeString": "type(uint72)"
                        },
                        "typeName": {
                          "id": 6884,
                          "name": "uint72",
                          "nodeType": "ElementaryTypeName",
                          "src": "14978:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 6887,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "14978:16:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint72",
                        "typeString": "uint72"
                      }
                    },
                    "src": "14948:46:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint72",
                      "typeString": "uint72"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "14928:66:34"
                },
                {
                  "assignments": [
                    6891
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6891,
                      "mutability": "mutable",
                      "name": "dataHash",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7093,
                      "src": "15004:16:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 6890,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "15004:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6899,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6895,
                            "name": "handler",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6870,
                            "src": "15050:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 6896,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6862,
                            "src": "15059:4:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 6893,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "15033:3:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 6894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "15033:16:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 6897,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15033:31:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 6892,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "15023:9:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 6898,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15023:42:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15004:61:34"
                },
                {
                  "assignments": [
                    6901
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 6901,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7093,
                      "src": "15075:24:34",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                        "typeString": "struct Bridge.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6900,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6167,
                        "src": "15075:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$6167_storage_ptr",
                          "typeString": "struct Bridge.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 6907,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 6902,
                        "name": "_proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6181,
                        "src": "15102:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$_$",
                          "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))"
                        }
                      },
                      "id": 6904,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 6903,
                        "name": "nonceAndID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6876,
                        "src": "15113:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint72",
                          "typeString": "uint72"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "15102:22:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$",
                        "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                      }
                    },
                    "id": 6906,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 6905,
                      "name": "dataHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6891,
                      "src": "15125:8:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "15102:32:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$6167_storage",
                      "typeString": "struct Bridge.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "15075:59:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 6916,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 6909,
                            "name": "_resourceIDToHandlerAddress",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6175,
                            "src": "15153:27:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                              "typeString": "mapping(bytes32 => address)"
                            }
                          },
                          "id": 6911,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 6910,
                            "name": "resourceID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6860,
                            "src": "15181:10:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "15153:39:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6914,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15204:1:34",
                              "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": 6913,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "15196:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 6912,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "15196:7:34",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 6915,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15196:10:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "15153:53:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "6e6f2068616e646c657220666f72207265736f757263654944",
                        "id": 6917,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15208:27:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20",
                          "typeString": "literal_string \"no handler for resourceID\""
                        },
                        "value": "no handler for resourceID"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20",
                          "typeString": "literal_string \"no handler for resourceID\""
                        }
                      ],
                      "id": 6908,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "15145:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6918,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15145:91:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6919,
                  "nodeType": "ExpressionStatement",
                  "src": "15145:91:34"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                      "typeString": "enum Bridge.ProposalStatus"
                    },
                    "id": 6924,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6920,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6901,
                        "src": "15251:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                          "typeString": "struct Bridge.Proposal memory"
                        }
                      },
                      "id": 6921,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6160,
                      "src": "15251:16:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                        "typeString": "enum Bridge.ProposalStatus"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6922,
                        "name": "ProposalStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6158,
                        "src": "15271:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                          "typeString": "type(enum Bridge.ProposalStatus)"
                        }
                      },
                      "id": 6923,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Passed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15271:21:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                        "typeString": "enum Bridge.ProposalStatus"
                      }
                    },
                    "src": "15251:41:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 6935,
                  "nodeType": "IfStatement",
                  "src": "15247:155:34",
                  "trueBody": {
                    "id": 6934,
                    "nodeType": "Block",
                    "src": "15294:108:34",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6926,
                              "name": "domainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6856,
                              "src": "15324:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6927,
                              "name": "depositNonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6858,
                              "src": "15334:12:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6928,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6862,
                              "src": "15348:4:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6929,
                              "name": "resourceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6860,
                              "src": "15354:10:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "74727565",
                              "id": 6930,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15366:4:34",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "true"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 6925,
                            "name": "executeProposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7310,
                            "src": "15308:15:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_uint64_$_t_bytes_calldata_ptr_$_t_bytes32_$_t_bool_$returns$__$",
                              "typeString": "function (uint8,uint64,bytes calldata,bytes32,bool)"
                            }
                          },
                          "id": 6931,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15308:63:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6932,
                        "nodeType": "ExpressionStatement",
                        "src": "15308:63:34"
                      },
                      {
                        "expression": null,
                        "functionReturnParameters": 6868,
                        "id": 6933,
                        "nodeType": "Return",
                        "src": "15385:7:34"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6939,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6901,
                                "src": "15433:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                                  "typeString": "struct Bridge.Proposal memory"
                                }
                              },
                              "id": 6940,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_status",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6160,
                              "src": "15433:16:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                "typeString": "enum Bridge.ProposalStatus"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                "typeString": "enum Bridge.ProposalStatus"
                              }
                            ],
                            "id": 6938,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "15428:4:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 6937,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "15428:4:34",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 6941,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15428:22:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 6942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "15454:1:34",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        },
                        "src": "15428:27:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "70726f706f73616c20616c72656164792065786563757465642f63616e63656c6c6564",
                        "id": 6944,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15457:37:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f0409114a41e8e671d7a0df50b4827806b4a45af8b2011927a9479dfc06d4aa5",
                          "typeString": "literal_string \"proposal already executed/cancelled\""
                        },
                        "value": "proposal already executed/cancelled"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f0409114a41e8e671d7a0df50b4827806b4a45af8b2011927a9479dfc06d4aa5",
                          "typeString": "literal_string \"proposal already executed/cancelled\""
                        }
                      ],
                      "id": 6936,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "15420:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6945,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15420:75:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6946,
                  "nodeType": "ExpressionStatement",
                  "src": "15420:75:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 6953,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "15513:32:34",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6949,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6901,
                              "src": "15524:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                                "typeString": "struct Bridge.Proposal memory"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6950,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "15534:3:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 6951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "15534:10:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                                "typeString": "struct Bridge.Proposal memory"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "id": 6948,
                            "name": "_hasVoted",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6347,
                            "src": "15514:9:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_struct$_Proposal_$6167_memory_ptr_$_t_address_$returns$_t_bool_$",
                              "typeString": "function (struct Bridge.Proposal memory,address) view returns (bool)"
                            }
                          },
                          "id": 6952,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15514:31:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "72656c6179657220616c726561647920766f746564",
                        "id": 6954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "15547:23:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b",
                          "typeString": "literal_string \"relayer already voted\""
                        },
                        "value": "relayer already voted"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b",
                          "typeString": "literal_string \"relayer already voted\""
                        }
                      ],
                      "id": 6947,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "15505:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 6955,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "15505:66:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 6956,
                  "nodeType": "ExpressionStatement",
                  "src": "15505:66:34"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                      "typeString": "enum Bridge.ProposalStatus"
                    },
                    "id": 6961,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6957,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6901,
                        "src": "15586:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                          "typeString": "struct Bridge.Proposal memory"
                        }
                      },
                      "id": 6958,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6160,
                      "src": "15586:16:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                        "typeString": "enum Bridge.ProposalStatus"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 6959,
                        "name": "ProposalStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6158,
                        "src": "15606:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                          "typeString": "type(enum Bridge.ProposalStatus)"
                        }
                      },
                      "id": 6960,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Inactive",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "15606:23:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                        "typeString": "enum Bridge.ProposalStatus"
                      }
                    },
                    "src": "15586:43:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "condition": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint40",
                        "typeString": "uint40"
                      },
                      "id": 6995,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6988,
                                  "name": "block",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -4,
                                  "src": "15997:5:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_block",
                                    "typeString": "block"
                                  }
                                },
                                "id": 6989,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "number",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15997:12:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6990,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6901,
                                  "src": "16011:8:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                                    "typeString": "struct Bridge.Proposal memory"
                                  }
                                },
                                "id": 6991,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "_proposedBlock",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6166,
                                "src": "16011:23:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              ],
                              "id": 6987,
                              "name": "sub",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 10361,
                              "src": "15993:3:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 6992,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15993:42:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "15986:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint40_$",
                            "typeString": "type(uint40)"
                          },
                          "typeName": {
                            "id": 6985,
                            "name": "uint40",
                            "nodeType": "ElementaryTypeName",
                            "src": "15986:6:34",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 6993,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15986:50:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": ">",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 6994,
                        "name": "_expiry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6152,
                        "src": "16039:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        }
                      },
                      "src": "15986:60:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "falseBody": null,
                    "id": 7012,
                    "nodeType": "IfStatement",
                    "src": "15982:385:34",
                    "trueBody": {
                      "id": 7011,
                      "nodeType": "Block",
                      "src": "16048:319:34",
                      "statements": [
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 7001,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6996,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6901,
                                "src": "16220:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                                  "typeString": "struct Bridge.Proposal memory"
                                }
                              },
                              "id": 6998,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "memberName": "_status",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6160,
                              "src": "16220:16:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                "typeString": "enum Bridge.ProposalStatus"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6999,
                                "name": "ProposalStatus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6158,
                                "src": "16239:14:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                                  "typeString": "type(enum Bridge.ProposalStatus)"
                                }
                              },
                              "id": 7000,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Cancelled",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "16239:24:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                "typeString": "enum Bridge.ProposalStatus"
                              }
                            },
                            "src": "16220:43:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                              "typeString": "enum Bridge.ProposalStatus"
                            }
                          },
                          "id": 7002,
                          "nodeType": "ExpressionStatement",
                          "src": "16220:43:34"
                        },
                        {
                          "eventCall": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7004,
                                "name": "domainID",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6856,
                                "src": "16297:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 7005,
                                "name": "depositNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6858,
                                "src": "16307:12:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7006,
                                  "name": "ProposalStatus",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6158,
                                  "src": "16321:14:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                                    "typeString": "type(enum Bridge.ProposalStatus)"
                                  }
                                },
                                "id": 7007,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Cancelled",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "16321:24:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                  "typeString": "enum Bridge.ProposalStatus"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 7008,
                                "name": "dataHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6891,
                                "src": "16347:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                  "typeString": "enum Bridge.ProposalStatus"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "id": 7003,
                              "name": "ProposalEvent",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6217,
                              "src": "16283:13:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$6158_$_t_bytes32_$returns$__$",
                                "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)"
                              }
                            },
                            "id": 7009,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16283:73:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 7010,
                          "nodeType": "EmitStatement",
                          "src": "16278:78:34"
                        }
                      ]
                    }
                  },
                  "id": 7013,
                  "nodeType": "IfStatement",
                  "src": "15582:785:34",
                  "trueBody": {
                    "id": 6984,
                    "nodeType": "Block",
                    "src": "15631:345:34",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 6962,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6901,
                            "src": "15645:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                              "typeString": "struct Bridge.Proposal memory"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 6964,
                                  "name": "ProposalStatus",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6158,
                                  "src": "15693:14:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                                    "typeString": "type(enum Bridge.ProposalStatus)"
                                  }
                                },
                                "id": 6965,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "Active",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15693:21:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                  "typeString": "enum Bridge.ProposalStatus"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6966,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15744:1:34",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6967,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15780:1:34",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6970,
                                      "name": "block",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -4,
                                      "src": "15823:5:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_block",
                                        "typeString": "block"
                                      }
                                    },
                                    "id": 6971,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "number",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "15823:12:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 6969,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "15816:6:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint40_$",
                                    "typeString": "type(uint40)"
                                  },
                                  "typeName": {
                                    "id": 6968,
                                    "name": "uint40",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "15816:6:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 6972,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "15816:20:34",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                  "typeString": "enum Bridge.ProposalStatus"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                {
                                  "typeIdentifier": "t_uint40",
                                  "typeString": "uint40"
                                }
                              ],
                              "id": 6963,
                              "name": "Proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6167,
                              "src": "15656:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_struct$_Proposal_$6167_storage_ptr_$",
                                "typeString": "type(struct Bridge.Proposal storage pointer)"
                              }
                            },
                            "id": 6973,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "structConstructorCall",
                            "lValueRequested": false,
                            "names": [
                              "_status",
                              "_yesVotes",
                              "_yesVotesTotal",
                              "_proposedBlock"
                            ],
                            "nodeType": "FunctionCall",
                            "src": "15656:219:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                              "typeString": "struct Bridge.Proposal memory"
                            }
                          },
                          "src": "15645:230:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                            "typeString": "struct Bridge.Proposal memory"
                          }
                        },
                        "id": 6975,
                        "nodeType": "ExpressionStatement",
                        "src": "15645:230:34"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 6977,
                              "name": "domainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6856,
                              "src": "15909:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6978,
                              "name": "depositNonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6858,
                              "src": "15919:12:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6979,
                                "name": "ProposalStatus",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6158,
                                "src": "15933:14:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                                  "typeString": "type(enum Bridge.ProposalStatus)"
                                }
                              },
                              "id": 6980,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "Active",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "15933:21:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                "typeString": "enum Bridge.ProposalStatus"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 6981,
                              "name": "dataHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6891,
                              "src": "15956:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                "typeString": "enum Bridge.ProposalStatus"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 6976,
                            "name": "ProposalEvent",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6217,
                            "src": "15895:13:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$6158_$_t_bytes32_$returns$__$",
                              "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)"
                            }
                          },
                          "id": 6982,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15895:70:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 6983,
                        "nodeType": "EmitStatement",
                        "src": "15890:75:34"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                      "typeString": "enum Bridge.ProposalStatus"
                    },
                    "id": 7018,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7014,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6901,
                        "src": "16381:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                          "typeString": "struct Bridge.Proposal memory"
                        }
                      },
                      "id": 7015,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6160,
                      "src": "16381:16:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                        "typeString": "enum Bridge.ProposalStatus"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7016,
                        "name": "ProposalStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6158,
                        "src": "16401:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                          "typeString": "type(enum Bridge.ProposalStatus)"
                        }
                      },
                      "id": 7017,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Cancelled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "16401:24:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                        "typeString": "enum Bridge.ProposalStatus"
                      }
                    },
                    "src": "16381:44:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7069,
                  "nodeType": "IfStatement",
                  "src": "16377:612:34",
                  "trueBody": {
                    "id": 7068,
                    "nodeType": "Block",
                    "src": "16427:562:34",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7032,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7019,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6901,
                              "src": "16441:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                                "typeString": "struct Bridge.Proposal memory"
                              }
                            },
                            "id": 7021,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "_yesVotes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6162,
                            "src": "16441:18:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint200",
                              "typeString": "uint200"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 7028,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7022,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6901,
                                        "src": "16463:8:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                                          "typeString": "struct Bridge.Proposal memory"
                                        }
                                      },
                                      "id": 7023,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "_yesVotes",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6162,
                                      "src": "16463:18:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint200",
                                        "typeString": "uint200"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "|",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 7025,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "16496:3:34",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 7026,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "sender",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "16496:10:34",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address_payable",
                                            "typeString": "address payable"
                                          }
                                        ],
                                        "id": 7024,
                                        "name": "_relayerBit",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6324,
                                        "src": "16484:11:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_uint256_$",
                                          "typeString": "function (address) view returns (uint256)"
                                        }
                                      },
                                      "id": 7027,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "16484:23:34",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "16463:44:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 7029,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "16462:46:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "toUint200",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 10274,
                              "src": "16462:56:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint200_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256) pure returns (uint200)"
                              }
                            },
                            "id": 7031,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16462:58:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint200",
                              "typeString": "uint200"
                            }
                          },
                          "src": "16441:79:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint200",
                            "typeString": "uint200"
                          }
                        },
                        "id": 7033,
                        "nodeType": "ExpressionStatement",
                        "src": "16441:79:34"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7037,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "16534:25:34",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7034,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6901,
                              "src": "16534:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                                "typeString": "struct Bridge.Proposal memory"
                              }
                            },
                            "id": 7036,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "_yesVotesTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6164,
                            "src": "16534:23:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        },
                        "id": 7038,
                        "nodeType": "ExpressionStatement",
                        "src": "16534:25:34"
                      },
                      {
                        "eventCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7040,
                              "name": "domainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6856,
                              "src": "16635:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7041,
                              "name": "depositNonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6858,
                              "src": "16645:12:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7042,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6901,
                                "src": "16659:8:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                                  "typeString": "struct Bridge.Proposal memory"
                                }
                              },
                              "id": 7043,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_status",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6160,
                              "src": "16659:16:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                "typeString": "enum Bridge.ProposalStatus"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7044,
                              "name": "dataHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6891,
                              "src": "16677:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                "typeString": "enum Bridge.ProposalStatus"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 7039,
                            "name": "ProposalVote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6227,
                            "src": "16622:12:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$6158_$_t_bytes32_$returns$__$",
                              "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)"
                            }
                          },
                          "id": 7045,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16622:64:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7046,
                        "nodeType": "EmitStatement",
                        "src": "16617:69:34"
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          },
                          "id": 7050,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7047,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6901,
                              "src": "16767:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                                "typeString": "struct Bridge.Proposal memory"
                              }
                            },
                            "id": 7048,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "_yesVotesTotal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6164,
                            "src": "16767:23:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 7049,
                            "name": "_relayerThreshold",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6148,
                            "src": "16794:17:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          "src": "16767:44:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 7067,
                        "nodeType": "IfStatement",
                        "src": "16763:216:34",
                        "trueBody": {
                          "id": 7066,
                          "nodeType": "Block",
                          "src": "16813:166:34",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 7056,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7051,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6901,
                                    "src": "16831:8:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                                      "typeString": "struct Bridge.Proposal memory"
                                    }
                                  },
                                  "id": 7053,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "memberName": "_status",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6160,
                                  "src": "16831:16:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                    "typeString": "enum Bridge.ProposalStatus"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7054,
                                    "name": "ProposalStatus",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6158,
                                    "src": "16850:14:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                                      "typeString": "type(enum Bridge.ProposalStatus)"
                                    }
                                  },
                                  "id": 7055,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "memberName": "Passed",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "16850:21:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                    "typeString": "enum Bridge.ProposalStatus"
                                  }
                                },
                                "src": "16831:40:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                  "typeString": "enum Bridge.ProposalStatus"
                                }
                              },
                              "id": 7057,
                              "nodeType": "ExpressionStatement",
                              "src": "16831:40:34"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7059,
                                    "name": "domainID",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6856,
                                    "src": "16908:8:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7060,
                                    "name": "depositNonce",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6858,
                                    "src": "16918:12:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7061,
                                      "name": "ProposalStatus",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6158,
                                      "src": "16932:14:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                                        "typeString": "type(enum Bridge.ProposalStatus)"
                                      }
                                    },
                                    "id": 7062,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "Passed",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "16932:21:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                      "typeString": "enum Bridge.ProposalStatus"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7063,
                                    "name": "dataHash",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6891,
                                    "src": "16955:8:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    },
                                    {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    {
                                      "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                      "typeString": "enum Bridge.ProposalStatus"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 7058,
                                  "name": "ProposalEvent",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6217,
                                  "src": "16894:13:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$6158_$_t_bytes32_$returns$__$",
                                    "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)"
                                  }
                                },
                                "id": 7064,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16894:70:34",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 7065,
                              "nodeType": "EmitStatement",
                              "src": "16889:75:34"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7076,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7070,
                          "name": "_proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6181,
                          "src": "16998:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$_$",
                            "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))"
                          }
                        },
                        "id": 7073,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7071,
                          "name": "nonceAndID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6876,
                          "src": "17009:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "16998:22:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$",
                          "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                        }
                      },
                      "id": 7074,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7072,
                        "name": "dataHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6891,
                        "src": "17021:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "16998:32:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$6167_storage",
                        "typeString": "struct Bridge.Proposal storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 7075,
                      "name": "proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6901,
                      "src": "17033:8:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                        "typeString": "struct Bridge.Proposal memory"
                      }
                    },
                    "src": "16998:43:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$6167_storage",
                      "typeString": "struct Bridge.Proposal storage ref"
                    }
                  },
                  "id": 7077,
                  "nodeType": "ExpressionStatement",
                  "src": "16998:43:34"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                      "typeString": "enum Bridge.ProposalStatus"
                    },
                    "id": 7082,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7078,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6901,
                        "src": "17056:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                          "typeString": "struct Bridge.Proposal memory"
                        }
                      },
                      "id": 7079,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "_status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6160,
                      "src": "17056:16:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                        "typeString": "enum Bridge.ProposalStatus"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7080,
                        "name": "ProposalStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6158,
                        "src": "17076:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                          "typeString": "type(enum Bridge.ProposalStatus)"
                        }
                      },
                      "id": 7081,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Passed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "17076:21:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                        "typeString": "enum Bridge.ProposalStatus"
                      }
                    },
                    "src": "17056:41:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 7092,
                  "nodeType": "IfStatement",
                  "src": "17052:136:34",
                  "trueBody": {
                    "id": 7091,
                    "nodeType": "Block",
                    "src": "17099:89:34",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7084,
                              "name": "domainID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6856,
                              "src": "17129:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7085,
                              "name": "depositNonce",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6858,
                              "src": "17139:12:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7086,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6862,
                              "src": "17153:4:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7087,
                              "name": "resourceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6860,
                              "src": "17159:10:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "66616c7365",
                              "id": 7088,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "bool",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "17171:5:34",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "value": "false"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              },
                              {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 7083,
                            "name": "executeProposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7310,
                            "src": "17113:15:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_uint8_$_t_uint64_$_t_bytes_calldata_ptr_$_t_bytes32_$_t_bool_$returns$__$",
                              "typeString": "function (uint8,uint64,bytes calldata,bytes32,bool)"
                            }
                          },
                          "id": 7089,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "17113:64:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7090,
                        "nodeType": "ExpressionStatement",
                        "src": "17113:64:34"
                      }
                    ]
                  }
                }
              ]
            },
            "documentation": {
              "id": 6854,
              "nodeType": "StructuredDocumentation",
              "src": "14057:653:34",
              "text": "@notice When called, {msg.sender} will be marked as voting in favor of proposal.\n@notice Only callable by relayers when Bridge is not paused.\n@param domainID ID of chain deposit originated from.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param data Data originally provided when deposit was made.\n@notice Proposal must not have already been passed or executed.\n@notice {msg.sender} must not have already voted on proposal.\n@notice Emits {ProposalEvent} event with status indicating the proposal status.\n@notice Emits {ProposalVote} event."
            },
            "functionSelector": "c0331b3e",
            "id": 7094,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 6865,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6864,
                  "name": "onlyRelayers",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6257,
                  "src": "14824:12:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14824:12:34"
              },
              {
                "arguments": null,
                "id": 6867,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 6866,
                  "name": "whenNotPaused",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10190,
                  "src": "14837:13:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "14837:13:34"
              }
            ],
            "name": "voteProposal",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 6863,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6856,
                  "mutability": "mutable",
                  "name": "domainID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7094,
                  "src": "14737:14:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 6855,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "14737:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6858,
                  "mutability": "mutable",
                  "name": "depositNonce",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7094,
                  "src": "14753:19:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 6857,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "14753:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6860,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7094,
                  "src": "14774:18:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 6859,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "14774:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6862,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7094,
                  "src": "14794:19:34",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 6861,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "14794:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "14736:78:34"
            },
            "returnParameters": {
              "id": 6868,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "14851:0:34"
            },
            "scope": 7346,
            "src": "14715:2479:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "body": {
              "id": 7185,
              "nodeType": "Block",
              "src": "17812:664:34",
              "statements": [
                {
                  "assignments": [
                    7107
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7107,
                      "mutability": "mutable",
                      "name": "nonceAndID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7185,
                      "src": "17822:17:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint72",
                        "typeString": "uint72"
                      },
                      "typeName": {
                        "id": 7106,
                        "name": "uint72",
                        "nodeType": "ElementaryTypeName",
                        "src": "17822:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint72",
                          "typeString": "uint72"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7120,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint72",
                      "typeString": "uint72"
                    },
                    "id": 7119,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          },
                          "id": 7113,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7110,
                                "name": "depositNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7099,
                                "src": "17850:12:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "id": 7109,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "17843:6:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint72_$",
                                "typeString": "type(uint72)"
                              },
                              "typeName": {
                                "id": 7108,
                                "name": "uint72",
                                "nodeType": "ElementaryTypeName",
                                "src": "17843:6:34",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 7111,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "17843:20:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint72",
                              "typeString": "uint72"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 7112,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "17867:1:34",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "src": "17843:25:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          }
                        }
                      ],
                      "id": 7114,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "17842:27:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint72",
                        "typeString": "uint72"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "|",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7117,
                          "name": "domainID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7097,
                          "src": "17879:8:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "id": 7116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "17872:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint72_$",
                          "typeString": "type(uint72)"
                        },
                        "typeName": {
                          "id": 7115,
                          "name": "uint72",
                          "nodeType": "ElementaryTypeName",
                          "src": "17872:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 7118,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "17872:16:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint72",
                        "typeString": "uint72"
                      }
                    },
                    "src": "17842:46:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint72",
                      "typeString": "uint72"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17822:66:34"
                },
                {
                  "assignments": [
                    7122
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7122,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7185,
                      "src": "17898:24:34",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                        "typeString": "struct Bridge.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7121,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6167,
                        "src": "17898:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$6167_storage_ptr",
                          "typeString": "struct Bridge.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7128,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7123,
                        "name": "_proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6181,
                        "src": "17925:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$_$",
                          "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))"
                        }
                      },
                      "id": 7125,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7124,
                        "name": "nonceAndID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7107,
                        "src": "17936:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint72",
                          "typeString": "uint72"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "17925:22:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$",
                        "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                      }
                    },
                    "id": 7127,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7126,
                      "name": "dataHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7101,
                      "src": "17948:8:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "17925:32:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$6167_storage",
                      "typeString": "struct Bridge.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17898:59:34"
                },
                {
                  "assignments": [
                    7130
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7130,
                      "mutability": "mutable",
                      "name": "currentStatus",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7185,
                      "src": "17967:28:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                        "typeString": "enum Bridge.ProposalStatus"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7129,
                        "name": "ProposalStatus",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6158,
                        "src": "17967:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                          "typeString": "enum Bridge.ProposalStatus"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7133,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "id": 7131,
                      "name": "proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7122,
                      "src": "17998:8:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                        "typeString": "struct Bridge.Proposal memory"
                      }
                    },
                    "id": 7132,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "_status",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 6160,
                    "src": "17998:16:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                      "typeString": "enum Bridge.ProposalStatus"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "17967:47:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                            "typeString": "enum Bridge.ProposalStatus"
                          },
                          "id": 7138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7135,
                            "name": "currentStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7130,
                            "src": "18033:13:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                              "typeString": "enum Bridge.ProposalStatus"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7136,
                              "name": "ProposalStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6158,
                              "src": "18050:14:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                                "typeString": "type(enum Bridge.ProposalStatus)"
                              }
                            },
                            "id": 7137,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Active",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "18050:21:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                              "typeString": "enum Bridge.ProposalStatus"
                            }
                          },
                          "src": "18033:38:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                            "typeString": "enum Bridge.ProposalStatus"
                          },
                          "id": 7142,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 7139,
                            "name": "currentStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7130,
                            "src": "18075:13:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                              "typeString": "enum Bridge.ProposalStatus"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7140,
                              "name": "ProposalStatus",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6158,
                              "src": "18092:14:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                                "typeString": "type(enum Bridge.ProposalStatus)"
                              }
                            },
                            "id": 7141,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "Passed",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "18092:21:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                              "typeString": "enum Bridge.ProposalStatus"
                            }
                          },
                          "src": "18075:38:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "18033:80:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "50726f706f73616c2063616e6e6f742062652063616e63656c6c6564",
                        "id": 7144,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18127:30:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_3863036f03bb39a81d63204f59d8caecfcc1db147fc7cc073a81bfb35752b3fa",
                          "typeString": "literal_string \"Proposal cannot be cancelled\""
                        },
                        "value": "Proposal cannot be cancelled"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_3863036f03bb39a81d63204f59d8caecfcc1db147fc7cc073a81bfb35752b3fa",
                          "typeString": "literal_string \"Proposal cannot be cancelled\""
                        }
                      ],
                      "id": 7134,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "18025:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7145,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18025:133:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7146,
                  "nodeType": "ExpressionStatement",
                  "src": "18025:133:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint40",
                          "typeString": "uint40"
                        },
                        "id": 7158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7151,
                                    "name": "block",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -4,
                                    "src": "18187:5:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_block",
                                      "typeString": "block"
                                    }
                                  },
                                  "id": 7152,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "number",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "18187:12:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7153,
                                    "name": "proposal",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7122,
                                    "src": "18201:8:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                                      "typeString": "struct Bridge.Proposal memory"
                                    }
                                  },
                                  "id": 7154,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_proposedBlock",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6166,
                                  "src": "18201:23:34",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint40",
                                    "typeString": "uint40"
                                  }
                                ],
                                "id": 7150,
                                "name": "sub",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 10361,
                                "src": "18183:3:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7155,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18183:42:34",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7149,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "18176:6:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint40_$",
                              "typeString": "type(uint40)"
                            },
                            "typeName": {
                              "id": 7148,
                              "name": "uint40",
                              "nodeType": "ElementaryTypeName",
                              "src": "18176:6:34",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 7156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "18176:50:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 7157,
                          "name": "_expiry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6152,
                          "src": "18229:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint40",
                            "typeString": "uint40"
                          }
                        },
                        "src": "18176:60:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "50726f706f73616c206e6f7420617420657870697279207468726573686f6c64",
                        "id": 7159,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "18238:34:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225",
                          "typeString": "literal_string \"Proposal not at expiry threshold\""
                        },
                        "value": "Proposal not at expiry threshold"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225",
                          "typeString": "literal_string \"Proposal not at expiry threshold\""
                        }
                      ],
                      "id": 7147,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "18168:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7160,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18168:105:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7161,
                  "nodeType": "ExpressionStatement",
                  "src": "18168:105:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7162,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7122,
                        "src": "18284:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                          "typeString": "struct Bridge.Proposal memory"
                        }
                      },
                      "id": 7164,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "_status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6160,
                      "src": "18284:16:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                        "typeString": "enum Bridge.ProposalStatus"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7165,
                        "name": "ProposalStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6158,
                        "src": "18303:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                          "typeString": "type(enum Bridge.ProposalStatus)"
                        }
                      },
                      "id": 7166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Cancelled",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "18303:24:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                        "typeString": "enum Bridge.ProposalStatus"
                      }
                    },
                    "src": "18284:43:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                      "typeString": "enum Bridge.ProposalStatus"
                    }
                  },
                  "id": 7168,
                  "nodeType": "ExpressionStatement",
                  "src": "18284:43:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7175,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 7169,
                          "name": "_proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6181,
                          "src": "18337:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$_$",
                            "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))"
                          }
                        },
                        "id": 7172,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 7170,
                          "name": "nonceAndID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7107,
                          "src": "18348:10:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "18337:22:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$",
                          "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                        }
                      },
                      "id": 7173,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7171,
                        "name": "dataHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7101,
                        "src": "18360:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "18337:32:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$6167_storage",
                        "typeString": "struct Bridge.Proposal storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 7174,
                      "name": "proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7122,
                      "src": "18372:8:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                        "typeString": "struct Bridge.Proposal memory"
                      }
                    },
                    "src": "18337:43:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$6167_storage",
                      "typeString": "struct Bridge.Proposal storage ref"
                    }
                  },
                  "id": 7176,
                  "nodeType": "ExpressionStatement",
                  "src": "18337:43:34"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7178,
                        "name": "domainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7097,
                        "src": "18410:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7179,
                        "name": "depositNonce",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7099,
                        "src": "18420:12:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7180,
                          "name": "ProposalStatus",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6158,
                          "src": "18434:14:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                            "typeString": "type(enum Bridge.ProposalStatus)"
                          }
                        },
                        "id": 7181,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Cancelled",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "18434:24:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                          "typeString": "enum Bridge.ProposalStatus"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7182,
                        "name": "dataHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7101,
                        "src": "18460:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                          "typeString": "enum Bridge.ProposalStatus"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 7177,
                      "name": "ProposalEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6217,
                      "src": "18396:13:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$6158_$_t_bytes32_$returns$__$",
                        "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)"
                      }
                    },
                    "id": 7183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "18396:73:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7184,
                  "nodeType": "EmitStatement",
                  "src": "18391:78:34"
                }
              ]
            },
            "documentation": {
              "id": 7095,
              "nodeType": "StructuredDocumentation",
              "src": "17200:502:34",
              "text": "@notice Cancels a deposit proposal that has not been executed yet.\n@notice Only callable by relayers when Bridge is not paused.\n@param domainID ID of chain deposit originated from.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param dataHash Hash of data originally provided when deposit was made.\n@notice Proposal must be past expiry threshold.\n@notice Emits {ProposalEvent} event with status {Cancelled}."
            },
            "functionSelector": "17f03ce5",
            "id": 7186,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 7104,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7103,
                  "name": "onlyAdminOrRelayer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6250,
                  "src": "17793:18:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "17793:18:34"
              }
            ],
            "name": "cancelProposal",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7102,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7097,
                  "mutability": "mutable",
                  "name": "domainID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7186,
                  "src": "17731:14:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 7096,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "17731:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7099,
                  "mutability": "mutable",
                  "name": "depositNonce",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7186,
                  "src": "17747:19:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 7098,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "17747:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7101,
                  "mutability": "mutable",
                  "name": "dataHash",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7186,
                  "src": "17768:16:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7100,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "17768:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "17730:55:34"
            },
            "returnParameters": {
              "id": 7105,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "17812:0:34"
            },
            "scope": 7346,
            "src": "17707:769:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7309,
              "nodeType": "Block",
              "src": "19494:994:34",
              "statements": [
                {
                  "assignments": [
                    7205
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7205,
                      "mutability": "mutable",
                      "name": "handler",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7309,
                      "src": "19504:15:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 7204,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "19504:7:34",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7209,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 7206,
                      "name": "_resourceIDToHandlerAddress",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6175,
                      "src": "19522:27:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 7208,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7207,
                      "name": "resourceID",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7195,
                      "src": "19550:10:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19522:39:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19504:57:34"
                },
                {
                  "assignments": [
                    7211
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7211,
                      "mutability": "mutable",
                      "name": "nonceAndID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7309,
                      "src": "19571:17:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint72",
                        "typeString": "uint72"
                      },
                      "typeName": {
                        "id": 7210,
                        "name": "uint72",
                        "nodeType": "ElementaryTypeName",
                        "src": "19571:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint72",
                          "typeString": "uint72"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7224,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint72",
                      "typeString": "uint72"
                    },
                    "id": 7223,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "components": [
                        {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          },
                          "id": 7217,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 7214,
                                "name": "depositNonce",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7191,
                                "src": "19599:12:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                }
                              ],
                              "id": 7213,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "19592:6:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint72_$",
                                "typeString": "type(uint72)"
                              },
                              "typeName": {
                                "id": 7212,
                                "name": "uint72",
                                "nodeType": "ElementaryTypeName",
                                "src": "19592:6:34",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 7215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19592:20:34",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint72",
                              "typeString": "uint72"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<<",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "38",
                            "id": 7216,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19616:1:34",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_8_by_1",
                              "typeString": "int_const 8"
                            },
                            "value": "8"
                          },
                          "src": "19592:25:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          }
                        }
                      ],
                      "id": 7218,
                      "isConstant": false,
                      "isInlineArray": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "TupleExpression",
                      "src": "19591:27:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint72",
                        "typeString": "uint72"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "|",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 7221,
                          "name": "domainID",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7189,
                          "src": "19628:8:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint8",
                            "typeString": "uint8"
                          }
                        ],
                        "id": 7220,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "19621:6:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_uint72_$",
                          "typeString": "type(uint72)"
                        },
                        "typeName": {
                          "id": 7219,
                          "name": "uint72",
                          "nodeType": "ElementaryTypeName",
                          "src": "19621:6:34",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 7222,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "19621:16:34",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint72",
                        "typeString": "uint72"
                      }
                    },
                    "src": "19591:46:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint72",
                      "typeString": "uint72"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19571:66:34"
                },
                {
                  "assignments": [
                    7226
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7226,
                      "mutability": "mutable",
                      "name": "dataHash",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7309,
                      "src": "19647:16:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 7225,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "19647:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7234,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 7230,
                            "name": "handler",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7205,
                            "src": "19693:7:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 7231,
                            "name": "data",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7193,
                            "src": "19702:4:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes_calldata_ptr",
                              "typeString": "bytes calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 7228,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -1,
                            "src": "19676:3:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 7229,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "19676:16:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 7232,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19676:31:34",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 7227,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -8,
                      "src": "19666:9:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 7233,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19666:42:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19647:61:34"
                },
                {
                  "assignments": [
                    7236
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7236,
                      "mutability": "mutable",
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7309,
                      "src": "19718:25:34",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$6167_storage_ptr",
                        "typeString": "struct Bridge.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7235,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6167,
                        "src": "19718:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$6167_storage_ptr",
                          "typeString": "struct Bridge.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7242,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 7237,
                        "name": "_proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6181,
                        "src": "19746:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint72_$_t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$_$",
                          "typeString": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))"
                        }
                      },
                      "id": 7239,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 7238,
                        "name": "nonceAndID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7211,
                        "src": "19757:10:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint72",
                          "typeString": "uint72"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "19746:22:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$6167_storage_$",
                        "typeString": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                      }
                    },
                    "id": 7241,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 7240,
                      "name": "dataHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7226,
                      "src": "19769:8:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "19746:32:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$6167_storage",
                      "typeString": "struct Bridge.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19718:60:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                          "typeString": "enum Bridge.ProposalStatus"
                        },
                        "id": 7248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7244,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7236,
                            "src": "19797:8:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$6167_storage_ptr",
                              "typeString": "struct Bridge.Proposal storage pointer"
                            }
                          },
                          "id": 7245,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "_status",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6160,
                          "src": "19797:16:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                            "typeString": "enum Bridge.ProposalStatus"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7246,
                            "name": "ProposalStatus",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6158,
                            "src": "19817:14:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                              "typeString": "type(enum Bridge.ProposalStatus)"
                            }
                          },
                          "id": 7247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "Passed",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "19817:21:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                            "typeString": "enum Bridge.ProposalStatus"
                          }
                        },
                        "src": "19797:41:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "50726f706f73616c206d75737420686176652050617373656420737461747573",
                        "id": 7249,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "19840:34:34",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_67a02cc877fbd6bd552d59c5da337acfaeb33dc5de9dd3b3b318b6e20c21a410",
                          "typeString": "literal_string \"Proposal must have Passed status\""
                        },
                        "value": "Proposal must have Passed status"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_67a02cc877fbd6bd552d59c5da337acfaeb33dc5de9dd3b3b318b6e20c21a410",
                          "typeString": "literal_string \"Proposal must have Passed status\""
                        }
                      ],
                      "id": 7243,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "19789:7:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 7250,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19789:86:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7251,
                  "nodeType": "ExpressionStatement",
                  "src": "19789:86:34"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 7257,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7252,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7236,
                        "src": "19886:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$6167_storage_ptr",
                          "typeString": "struct Bridge.Proposal storage pointer"
                        }
                      },
                      "id": 7254,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "_status",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 6160,
                      "src": "19886:16:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                        "typeString": "enum Bridge.ProposalStatus"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7255,
                        "name": "ProposalStatus",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 6158,
                        "src": "19905:14:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                          "typeString": "type(enum Bridge.ProposalStatus)"
                        }
                      },
                      "id": 7256,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "memberName": "Executed",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "19905:23:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                        "typeString": "enum Bridge.ProposalStatus"
                      }
                    },
                    "src": "19886:42:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                      "typeString": "enum Bridge.ProposalStatus"
                    }
                  },
                  "id": 7258,
                  "nodeType": "ExpressionStatement",
                  "src": "19886:42:34"
                },
                {
                  "assignments": [
                    7260
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 7260,
                      "mutability": "mutable",
                      "name": "depositHandler",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7309,
                      "src": "19938:30:34",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IDepositExecute_$9816",
                        "typeString": "contract IDepositExecute"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 7259,
                        "name": "IDepositExecute",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 9816,
                        "src": "19938:15:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IDepositExecute_$9816",
                          "typeString": "contract IDepositExecute"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 7264,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7262,
                        "name": "handler",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7205,
                        "src": "19987:7:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 7261,
                      "name": "IDepositExecute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 9816,
                      "src": "19971:15:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_IDepositExecute_$9816_$",
                        "typeString": "type(contract IDepositExecute)"
                      }
                    },
                    "id": 7263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "19971:24:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IDepositExecute_$9816",
                      "typeString": "contract IDepositExecute"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "19938:57:34"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "id": 7265,
                    "name": "revertOnFail",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 7197,
                    "src": "20010:12:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 7299,
                    "nodeType": "Block",
                    "src": "20103:283:34",
                    "statements": [
                      {
                        "clauses": [
                          {
                            "block": {
                              "id": 7279,
                              "nodeType": "Block",
                              "src": "20170:15:34",
                              "statements": []
                            },
                            "errorName": "",
                            "id": 7280,
                            "nodeType": "TryCatchClause",
                            "parameters": null,
                            "src": "20170:15:34"
                          },
                          {
                            "block": {
                              "id": 7296,
                              "nodeType": "Block",
                              "src": "20220:156:34",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7289,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7284,
                                        "name": "proposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7236,
                                        "src": "20238:8:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$6167_storage_ptr",
                                          "typeString": "struct Bridge.Proposal storage pointer"
                                        }
                                      },
                                      "id": 7286,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "_status",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6160,
                                      "src": "20238:16:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                        "typeString": "enum Bridge.ProposalStatus"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7287,
                                        "name": "ProposalStatus",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6158,
                                        "src": "20257:14:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                                          "typeString": "type(enum Bridge.ProposalStatus)"
                                        }
                                      },
                                      "id": 7288,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "Passed",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "20257:21:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                        "typeString": "enum Bridge.ProposalStatus"
                                      }
                                    },
                                    "src": "20238:40:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                      "typeString": "enum Bridge.ProposalStatus"
                                    }
                                  },
                                  "id": 7290,
                                  "nodeType": "ExpressionStatement",
                                  "src": "20238:40:34"
                                },
                                {
                                  "eventCall": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 7292,
                                        "name": "lowLevelData",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7282,
                                        "src": "20324:12:34",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      ],
                                      "id": 7291,
                                      "name": "FailedHandlerExecution",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6231,
                                      "src": "20301:22:34",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes_memory_ptr_$returns$__$",
                                        "typeString": "function (bytes memory)"
                                      }
                                    },
                                    "id": 7293,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "20301:36:34",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 7294,
                                  "nodeType": "EmitStatement",
                                  "src": "20296:41:34"
                                },
                                {
                                  "expression": null,
                                  "functionReturnParameters": 7203,
                                  "id": 7295,
                                  "nodeType": "Return",
                                  "src": "20355:7:34"
                                }
                              ]
                            },
                            "errorName": "",
                            "id": 7297,
                            "nodeType": "TryCatchClause",
                            "parameters": {
                              "id": 7283,
                              "nodeType": "ParameterList",
                              "parameters": [
                                {
                                  "constant": false,
                                  "id": 7282,
                                  "mutability": "mutable",
                                  "name": "lowLevelData",
                                  "nodeType": "VariableDeclaration",
                                  "overrides": null,
                                  "scope": 7297,
                                  "src": "20193:25:34",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes"
                                  },
                                  "typeName": {
                                    "id": 7281,
                                    "name": "bytes",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "20193:5:34",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_storage_ptr",
                                      "typeString": "bytes"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "src": "20192:27:34"
                            },
                            "src": "20186:190:34"
                          }
                        ],
                        "externalCall": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7276,
                              "name": "resourceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7195,
                              "src": "20152:10:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7277,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7193,
                              "src": "20164:4:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7274,
                              "name": "depositHandler",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7260,
                              "src": "20121:14:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IDepositExecute_$9816",
                                "typeString": "contract IDepositExecute"
                              }
                            },
                            "id": 7275,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "executeProposal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9815,
                            "src": "20121:30:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,bytes memory) external"
                            }
                          },
                          "id": 7278,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20121:48:34",
                          "tryCall": true,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7298,
                        "nodeType": "TryStatement",
                        "src": "20117:259:34"
                      }
                    ]
                  },
                  "id": 7300,
                  "nodeType": "IfStatement",
                  "src": "20006:380:34",
                  "trueBody": {
                    "id": 7273,
                    "nodeType": "Block",
                    "src": "20024:73:34",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 7269,
                              "name": "resourceID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7195,
                              "src": "20069:10:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 7270,
                              "name": "data",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7193,
                              "src": "20081:4:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes_calldata_ptr",
                                "typeString": "bytes calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 7266,
                              "name": "depositHandler",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7260,
                              "src": "20038:14:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IDepositExecute_$9816",
                                "typeString": "contract IDepositExecute"
                              }
                            },
                            "id": 7268,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "executeProposal",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 9815,
                            "src": "20038:30:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes_memory_ptr_$returns$__$",
                              "typeString": "function (bytes32,bytes memory) external"
                            }
                          },
                          "id": 7271,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "20038:48:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7272,
                        "nodeType": "ExpressionStatement",
                        "src": "20038:48:34"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 7302,
                        "name": "domainID",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7189,
                        "src": "20423:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7303,
                        "name": "depositNonce",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7191,
                        "src": "20433:12:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 7304,
                          "name": "ProposalStatus",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6158,
                          "src": "20447:14:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_enum$_ProposalStatus_$6158_$",
                            "typeString": "type(enum Bridge.ProposalStatus)"
                          }
                        },
                        "id": 7305,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "memberName": "Executed",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "20447:23:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                          "typeString": "enum Bridge.ProposalStatus"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 7306,
                        "name": "dataHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7226,
                        "src": "20472:8:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        },
                        {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        },
                        {
                          "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                          "typeString": "enum Bridge.ProposalStatus"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 7301,
                      "name": "ProposalEvent",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 6217,
                      "src": "20409:13:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_uint8_$_t_uint64_$_t_enum$_ProposalStatus_$6158_$_t_bytes32_$returns$__$",
                        "typeString": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)"
                      }
                    },
                    "id": 7307,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "20409:72:34",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 7308,
                  "nodeType": "EmitStatement",
                  "src": "20404:77:34"
                }
              ]
            },
            "documentation": {
              "id": 7187,
              "nodeType": "StructuredDocumentation",
              "src": "18482:851:34",
              "text": "@notice Executes a deposit proposal that is considered passed using a specified handler contract.\n@notice Only callable by relayers when Bridge is not paused.\n@param domainID ID of chain deposit originated from.\n@param resourceID ResourceID to be used when making deposits.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param data Data originally provided when deposit was made.\n@param revertOnFail Decision if the transaction should be reverted in case of handler's executeProposal is reverted or not.\n@notice Proposal must have Passed status.\n@notice Hash of {data} must equal proposal's {dataHash}.\n@notice Emits {ProposalEvent} event with status {Executed}.\n@notice Emits {FailedExecution} event with the failed reason."
            },
            "functionSelector": "206a98fd",
            "id": 7310,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 7200,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7199,
                  "name": "onlyRelayers",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6257,
                  "src": "19467:12:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "19467:12:34"
              },
              {
                "arguments": null,
                "id": 7202,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7201,
                  "name": "whenNotPaused",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 10190,
                  "src": "19480:13:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "19480:13:34"
              }
            ],
            "name": "executeProposal",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7198,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7189,
                  "mutability": "mutable",
                  "name": "domainID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7310,
                  "src": "19363:14:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  },
                  "typeName": {
                    "id": 7188,
                    "name": "uint8",
                    "nodeType": "ElementaryTypeName",
                    "src": "19363:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7191,
                  "mutability": "mutable",
                  "name": "depositNonce",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7310,
                  "src": "19379:19:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  },
                  "typeName": {
                    "id": 7190,
                    "name": "uint64",
                    "nodeType": "ElementaryTypeName",
                    "src": "19379:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint64",
                      "typeString": "uint64"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7193,
                  "mutability": "mutable",
                  "name": "data",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7310,
                  "src": "19400:19:34",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes_calldata_ptr",
                    "typeString": "bytes"
                  },
                  "typeName": {
                    "id": 7192,
                    "name": "bytes",
                    "nodeType": "ElementaryTypeName",
                    "src": "19400:5:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes_storage_ptr",
                      "typeString": "bytes"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7195,
                  "mutability": "mutable",
                  "name": "resourceID",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7310,
                  "src": "19421:18:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 7194,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "19421:7:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7197,
                  "mutability": "mutable",
                  "name": "revertOnFail",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7310,
                  "src": "19441:17:34",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 7196,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "19441:4:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "19362:97:34"
            },
            "returnParameters": {
              "id": 7203,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "19494:0:34"
            },
            "scope": 7346,
            "src": "19338:1150:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 7344,
              "nodeType": "Block",
              "src": "20979:113:34",
              "statements": [
                {
                  "body": {
                    "id": 7342,
                    "nodeType": "Block",
                    "src": "21032:54:34",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7337,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7317,
                                "src": "21064:7:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                                  "typeString": "uint256[] calldata"
                                }
                              },
                              "id": 7339,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7338,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7323,
                                "src": "21072:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21064:10:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 7333,
                                "name": "addrs",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7314,
                                "src": "21046:5:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                                  "typeString": "address payable[] calldata"
                                }
                              },
                              "id": 7335,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 7334,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7323,
                                "src": "21052:1:34",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "21046:8:34",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "id": 7336,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "transfer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "21046:17:34",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                              "typeString": "function (uint256)"
                            }
                          },
                          "id": 7340,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "21046:29:34",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 7341,
                        "nodeType": "ExpressionStatement",
                        "src": "21046:29:34"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 7329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 7326,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 7323,
                      "src": "21009:1:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 7327,
                        "name": "addrs",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7314,
                        "src": "21013:5:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                          "typeString": "address payable[] calldata"
                        }
                      },
                      "id": 7328,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "21013:12:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "21009:16:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 7343,
                  "initializationExpression": {
                    "assignments": [
                      7323
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 7323,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 7343,
                        "src": "20994:9:34",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 7322,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "20994:7:34",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 7325,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 7324,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "21006:1:34",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "20994:13:34"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 7331,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "21027:3:34",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 7330,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 7323,
                        "src": "21027:1:34",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 7332,
                    "nodeType": "ExpressionStatement",
                    "src": "21027:3:34"
                  },
                  "nodeType": "ForStatement",
                  "src": "20989:97:34"
                }
              ]
            },
            "documentation": {
              "id": 7311,
              "nodeType": "StructuredDocumentation",
              "src": "20494:379:34",
              "text": "@notice Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1.\nThis means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\n@param addrs Array of addresses to transfer {amounts} to.\n@param amounts Array of amonuts to transfer to {addrs}."
            },
            "functionSelector": "4603ae38",
            "id": 7345,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 7320,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 7319,
                  "name": "onlyAdmin",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 6243,
                  "src": "20969:9:34",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "20969:9:34"
              }
            ],
            "name": "transferFunds",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 7318,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 7314,
                  "mutability": "mutable",
                  "name": "addrs",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7345,
                  "src": "20901:32:34",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_payable_$dyn_calldata_ptr",
                    "typeString": "address payable[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7312,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "20901:15:34",
                      "stateMutability": "payable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "id": 7313,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "20901:17:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_payable_$dyn_storage_ptr",
                      "typeString": "address payable[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 7317,
                  "mutability": "mutable",
                  "name": "amounts",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 7345,
                  "src": "20935:23:34",
                  "stateVariable": false,
                  "storageLocation": "calldata",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$dyn_calldata_ptr",
                    "typeString": "uint256[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 7315,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "20935:4:34",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 7316,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "20935:6:34",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                      "typeString": "uint256[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "20900:59:34"
            },
            "returnParameters": {
              "id": 7321,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "20979:0:34"
            },
            "scope": 7346,
            "src": "20878:214:34",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 7347,
        "src": "494:20600:34"
      }
    ],
    "src": "42:21053:34"
  },
  "legacyAST": {
    "attributes": {
      "absolutePath": "project:/contracts/Bridge.sol",
      "exportedSymbols": {
        "Bridge": [
          7346
        ]
      },
      "license": "LGPL-3.0-only"
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "0.6",
            ".12"
          ]
        },
        "id": 6124,
        "name": "PragmaDirective",
        "src": "42:23:34"
      },
      {
        "attributes": {
          "literals": [
            "experimental",
            "ABIEncoderV2"
          ]
        },
        "id": 6125,
        "name": "PragmaDirective",
        "src": "66:33:34"
      },
      {
        "attributes": {
          "SourceUnit": 10150,
          "absolutePath": "project:/contracts/utils/AccessControl.sol",
          "file": "./utils/AccessControl.sol",
          "scope": 7347,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6126,
        "name": "ImportDirective",
        "src": "101:35:34"
      },
      {
        "attributes": {
          "SourceUnit": 10251,
          "absolutePath": "project:/contracts/utils/Pausable.sol",
          "file": "./utils/Pausable.sol",
          "scope": 7347,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6127,
        "name": "ImportDirective",
        "src": "137:30:34"
      },
      {
        "attributes": {
          "SourceUnit": 10391,
          "absolutePath": "project:/contracts/utils/SafeMath.sol",
          "file": "./utils/SafeMath.sol",
          "scope": 7347,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6128,
        "name": "ImportDirective",
        "src": "168:30:34"
      },
      {
        "attributes": {
          "SourceUnit": 10342,
          "absolutePath": "project:/contracts/utils/SafeCast.sol",
          "file": "./utils/SafeCast.sol",
          "scope": 7347,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6129,
        "name": "ImportDirective",
        "src": "199:30:34"
      },
      {
        "attributes": {
          "SourceUnit": 9817,
          "absolutePath": "project:/contracts/interfaces/IDepositExecute.sol",
          "file": "./interfaces/IDepositExecute.sol",
          "scope": 7347,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6130,
        "name": "ImportDirective",
        "src": "230:42:34"
      },
      {
        "attributes": {
          "SourceUnit": 9841,
          "absolutePath": "project:/contracts/interfaces/IERCHandler.sol",
          "file": "./interfaces/IERCHandler.sol",
          "scope": 7347,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6131,
        "name": "ImportDirective",
        "src": "273:38:34"
      },
      {
        "attributes": {
          "SourceUnit": 9859,
          "absolutePath": "project:/contracts/interfaces/IGenericHandler.sol",
          "file": "./interfaces/IGenericHandler.sol",
          "scope": 7347,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 6132,
        "name": "ImportDirective",
        "src": "312:42:34"
      },
      {
        "attributes": {
          "abstract": false,
          "contractDependencies": [
            4841,
            10149,
            10250,
            10390
          ],
          "contractKind": "contract",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            7346,
            10390,
            10149,
            4841,
            10250
          ],
          "name": "Bridge",
          "scope": 7347
        },
        "children": [
          {
            "attributes": {
              "text": "@title Facilitates deposits, creation and voting of deposit proposals, and deposit executions.\n@author ChainSafe Systems."
            },
            "id": 6133,
            "name": "StructuredDocumentation",
            "src": "356:137:34"
          },
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "Pausable",
                  "referencedDeclaration": 10250,
                  "type": "contract Pausable"
                },
                "id": 6134,
                "name": "UserDefinedTypeName",
                "src": "513:8:34"
              }
            ],
            "id": 6135,
            "name": "InheritanceSpecifier",
            "src": "513:8:34"
          },
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "AccessControl",
                  "referencedDeclaration": 10149,
                  "type": "contract AccessControl"
                },
                "id": 6136,
                "name": "UserDefinedTypeName",
                "src": "523:13:34"
              }
            ],
            "id": 6137,
            "name": "InheritanceSpecifier",
            "src": "523:13:34"
          },
          {
            "attributes": {
              "arguments": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeMath",
                  "referencedDeclaration": 10390,
                  "type": "contract SafeMath"
                },
                "id": 6138,
                "name": "UserDefinedTypeName",
                "src": "538:8:34"
              }
            ],
            "id": 6139,
            "name": "InheritanceSpecifier",
            "src": "538:8:34"
          },
          {
            "attributes": {
              "typeName": null
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "SafeCast",
                  "referencedDeclaration": 10341,
                  "type": "library SafeCast"
                },
                "id": 6140,
                "name": "UserDefinedTypeName",
                "src": "559:8:34"
              }
            ],
            "id": 6141,
            "name": "UsingForDirective",
            "src": "553:21:34"
          },
          {
            "attributes": {
              "constant": true,
              "functionSelector": "9debb3bd",
              "mutability": "constant",
              "name": "MAX_RELAYERS",
              "overrides": null,
              "scope": 7346,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint256",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint256",
                  "type": "uint256"
                },
                "id": 6142,
                "name": "ElementaryTypeName",
                "src": "653:7:34"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "323030",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "number",
                  "type": "int_const 200",
                  "value": "200"
                },
                "id": 6143,
                "name": "Literal",
                "src": "692:3:34"
              }
            ],
            "id": 6144,
            "name": "VariableDeclaration",
            "src": "653:42:34"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "9dd694f4",
              "mutability": "mutable",
              "name": "_domainID",
              "overrides": null,
              "scope": 7346,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint8",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint8",
                  "type": "uint8"
                },
                "id": 6145,
                "name": "ElementaryTypeName",
                "src": "702:5:34"
              }
            ],
            "id": 6146,
            "name": "VariableDeclaration",
            "src": "702:24:34"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "d7a9cd79",
              "mutability": "mutable",
              "name": "_relayerThreshold",
              "overrides": null,
              "scope": 7346,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint8",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint8",
                  "type": "uint8"
                },
                "id": 6147,
                "name": "ElementaryTypeName",
                "src": "732:5:34"
              }
            ],
            "id": 6148,
            "name": "VariableDeclaration",
            "src": "732:32:34"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "c5b37c22",
              "mutability": "mutable",
              "name": "_fee",
              "overrides": null,
              "scope": 7346,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint128",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint128",
                  "type": "uint128"
                },
                "id": 6149,
                "name": "ElementaryTypeName",
                "src": "770:7:34"
              }
            ],
            "id": 6150,
            "name": "VariableDeclaration",
            "src": "770:19:34"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "c5ec8970",
              "mutability": "mutable",
              "name": "_expiry",
              "overrides": null,
              "scope": 7346,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "uint40",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "uint40",
                  "type": "uint40"
                },
                "id": 6151,
                "name": "ElementaryTypeName",
                "src": "795:6:34"
              }
            ],
            "id": 6152,
            "name": "VariableDeclaration",
            "src": "795:22:34"
          },
          {
            "attributes": {
              "canonicalName": "Bridge.ProposalStatus",
              "name": "ProposalStatus"
            },
            "children": [
              {
                "attributes": {
                  "name": "Inactive"
                },
                "id": 6153,
                "name": "EnumValue",
                "src": "845:8:34"
              },
              {
                "attributes": {
                  "name": "Active"
                },
                "id": 6154,
                "name": "EnumValue",
                "src": "855:6:34"
              },
              {
                "attributes": {
                  "name": "Passed"
                },
                "id": 6155,
                "name": "EnumValue",
                "src": "863:6:34"
              },
              {
                "attributes": {
                  "name": "Executed"
                },
                "id": 6156,
                "name": "EnumValue",
                "src": "871:8:34"
              },
              {
                "attributes": {
                  "name": "Cancelled"
                },
                "id": 6157,
                "name": "EnumValue",
                "src": "881:9:34"
              }
            ],
            "id": 6158,
            "name": "EnumDefinition",
            "src": "824:67:34"
          },
          {
            "attributes": {
              "canonicalName": "Bridge.Proposal",
              "name": "Proposal",
              "scope": 7346,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "_status",
                  "overrides": null,
                  "scope": 6167,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "enum Bridge.ProposalStatus",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "ProposalStatus",
                      "referencedDeclaration": 6158,
                      "type": "enum Bridge.ProposalStatus"
                    },
                    "id": 6159,
                    "name": "UserDefinedTypeName",
                    "src": "923:14:34"
                  }
                ],
                "id": 6160,
                "name": "VariableDeclaration",
                "src": "923:22:34"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "_yesVotes",
                  "overrides": null,
                  "scope": 6167,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint200",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint200",
                      "type": "uint200"
                    },
                    "id": 6161,
                    "name": "ElementaryTypeName",
                    "src": "955:7:34"
                  }
                ],
                "id": 6162,
                "name": "VariableDeclaration",
                "src": "955:17:34"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "_yesVotesTotal",
                  "overrides": null,
                  "scope": 6167,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint8",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint8",
                      "type": "uint8"
                    },
                    "id": 6163,
                    "name": "ElementaryTypeName",
                    "src": "1016:5:34"
                  }
                ],
                "id": 6164,
                "name": "VariableDeclaration",
                "src": "1016:22:34"
              },
              {
                "attributes": {
                  "constant": false,
                  "mutability": "mutable",
                  "name": "_proposedBlock",
                  "overrides": null,
                  "scope": 6167,
                  "stateVariable": false,
                  "storageLocation": "default",
                  "type": "uint40",
                  "value": null,
                  "visibility": "internal"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint40",
                      "type": "uint40"
                    },
                    "id": 6165,
                    "name": "ElementaryTypeName",
                    "src": "1048:6:34"
                  }
                ],
                "id": 6166,
                "name": "VariableDeclaration",
                "src": "1048:22:34"
              }
            ],
            "id": 6167,
            "name": "StructDefinition",
            "src": "897:211:34"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "4b0b919d",
              "mutability": "mutable",
              "name": "_depositCounts",
              "overrides": null,
              "scope": 7346,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint8 => uint64)",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint8 => uint64)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint8",
                      "type": "uint8"
                    },
                    "id": 6168,
                    "name": "ElementaryTypeName",
                    "src": "1171:5:34"
                  },
                  {
                    "attributes": {
                      "name": "uint64",
                      "type": "uint64"
                    },
                    "id": 6169,
                    "name": "ElementaryTypeName",
                    "src": "1180:6:34"
                  }
                ],
                "id": 6170,
                "name": "Mapping",
                "src": "1163:24:34"
              }
            ],
            "id": 6171,
            "name": "VariableDeclaration",
            "src": "1163:46:34"
          },
          {
            "attributes": {
              "constant": false,
              "functionSelector": "84db809f",
              "mutability": "mutable",
              "name": "_resourceIDToHandlerAddress",
              "overrides": null,
              "scope": 7346,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(bytes32 => address)",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(bytes32 => address)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 6172,
                    "name": "ElementaryTypeName",
                    "src": "1260:7:34"
                  },
                  {
                    "attributes": {
                      "name": "address",
                      "stateMutability": "nonpayable",
                      "type": "address"
                    },
                    "id": 6173,
                    "name": "ElementaryTypeName",
                    "src": "1271:7:34"
                  }
                ],
                "id": 6174,
                "name": "Mapping",
                "src": "1252:27:34"
              }
            ],
            "id": 6175,
            "name": "VariableDeclaration",
            "src": "1252:62:34"
          },
          {
            "attributes": {
              "constant": false,
              "mutability": "mutable",
              "name": "_proposals",
              "overrides": null,
              "scope": 7346,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal))",
              "value": null,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal))"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "uint72",
                      "type": "uint72"
                    },
                    "id": 6176,
                    "name": "ElementaryTypeName",
                    "src": "1394:6:34"
                  },
                  {
                    "attributes": {
                      "type": "mapping(bytes32 => struct Bridge.Proposal)"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6177,
                        "name": "ElementaryTypeName",
                        "src": "1412:7:34"
                      },
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Proposal",
                          "referencedDeclaration": 6167,
                          "type": "struct Bridge.Proposal"
                        },
                        "id": 6178,
                        "name": "UserDefinedTypeName",
                        "src": "1423:8:34"
                      }
                    ],
                    "id": 6179,
                    "name": "Mapping",
                    "src": "1404:28:34"
                  }
                ],
                "id": 6180,
                "name": "Mapping",
                "src": "1386:47:34"
              }
            ],
            "id": 6181,
            "name": "VariableDeclaration",
            "src": "1386:66:34"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "RelayerThresholdChanged"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "newThreshold",
                      "overrides": null,
                      "scope": 6185,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6182,
                        "name": "ElementaryTypeName",
                        "src": "1489:7:34"
                      }
                    ],
                    "id": 6183,
                    "name": "VariableDeclaration",
                    "src": "1489:20:34"
                  }
                ],
                "id": 6184,
                "name": "ParameterList",
                "src": "1488:22:34"
              }
            ],
            "id": 6185,
            "name": "EventDefinition",
            "src": "1459:52:34"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "RelayerAdded"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "relayer",
                      "overrides": null,
                      "scope": 6189,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6186,
                        "name": "ElementaryTypeName",
                        "src": "1535:7:34"
                      }
                    ],
                    "id": 6187,
                    "name": "VariableDeclaration",
                    "src": "1535:15:34"
                  }
                ],
                "id": 6188,
                "name": "ParameterList",
                "src": "1534:17:34"
              }
            ],
            "id": 6189,
            "name": "EventDefinition",
            "src": "1516:36:34"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "RelayerRemoved"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "relayer",
                      "overrides": null,
                      "scope": 6193,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6190,
                        "name": "ElementaryTypeName",
                        "src": "1578:7:34"
                      }
                    ],
                    "id": 6191,
                    "name": "VariableDeclaration",
                    "src": "1578:15:34"
                  }
                ],
                "id": 6192,
                "name": "ParameterList",
                "src": "1577:17:34"
              }
            ],
            "id": 6193,
            "name": "EventDefinition",
            "src": "1557:38:34"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "Deposit"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "destinationDomainID",
                      "overrides": null,
                      "scope": 6207,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 6194,
                        "name": "ElementaryTypeName",
                        "src": "1623:5:34"
                      }
                    ],
                    "id": 6195,
                    "name": "VariableDeclaration",
                    "src": "1623:27:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "resourceID",
                      "overrides": null,
                      "scope": 6207,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6196,
                        "name": "ElementaryTypeName",
                        "src": "1660:7:34"
                      }
                    ],
                    "id": 6197,
                    "name": "VariableDeclaration",
                    "src": "1660:18:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "depositNonce",
                      "overrides": null,
                      "scope": 6207,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 6198,
                        "name": "ElementaryTypeName",
                        "src": "1688:6:34"
                      }
                    ],
                    "id": 6199,
                    "name": "VariableDeclaration",
                    "src": "1688:20:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "user",
                      "overrides": null,
                      "scope": 6207,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6200,
                        "name": "ElementaryTypeName",
                        "src": "1718:7:34"
                      }
                    ],
                    "id": 6201,
                    "name": "VariableDeclaration",
                    "src": "1718:20:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "data",
                      "overrides": null,
                      "scope": 6207,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 6202,
                        "name": "ElementaryTypeName",
                        "src": "1748:5:34"
                      }
                    ],
                    "id": 6203,
                    "name": "VariableDeclaration",
                    "src": "1748:10:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "handlerResponse",
                      "overrides": null,
                      "scope": 6207,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 6204,
                        "name": "ElementaryTypeName",
                        "src": "1768:5:34"
                      }
                    ],
                    "id": 6205,
                    "name": "VariableDeclaration",
                    "src": "1768:21:34"
                  }
                ],
                "id": 6206,
                "name": "ParameterList",
                "src": "1613:182:34"
              }
            ],
            "id": 6207,
            "name": "EventDefinition",
            "src": "1600:196:34"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "ProposalEvent"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "originDomainID",
                      "overrides": null,
                      "scope": 6217,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 6208,
                        "name": "ElementaryTypeName",
                        "src": "1830:5:34"
                      }
                    ],
                    "id": 6209,
                    "name": "VariableDeclaration",
                    "src": "1830:29:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "depositNonce",
                      "overrides": null,
                      "scope": 6217,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 6210,
                        "name": "ElementaryTypeName",
                        "src": "1869:6:34"
                      }
                    ],
                    "id": 6211,
                    "name": "VariableDeclaration",
                    "src": "1869:27:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "status",
                      "overrides": null,
                      "scope": 6217,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "enum Bridge.ProposalStatus",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "ProposalStatus",
                          "referencedDeclaration": 6158,
                          "type": "enum Bridge.ProposalStatus"
                        },
                        "id": 6212,
                        "name": "UserDefinedTypeName",
                        "src": "1906:14:34"
                      }
                    ],
                    "id": 6213,
                    "name": "VariableDeclaration",
                    "src": "1906:21:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "dataHash",
                      "overrides": null,
                      "scope": 6217,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6214,
                        "name": "ElementaryTypeName",
                        "src": "1937:7:34"
                      }
                    ],
                    "id": 6215,
                    "name": "VariableDeclaration",
                    "src": "1937:16:34"
                  }
                ],
                "id": 6216,
                "name": "ParameterList",
                "src": "1820:139:34"
              }
            ],
            "id": 6217,
            "name": "EventDefinition",
            "src": "1801:159:34"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "ProposalVote"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "originDomainID",
                      "overrides": null,
                      "scope": 6227,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 6218,
                        "name": "ElementaryTypeName",
                        "src": "1993:5:34"
                      }
                    ],
                    "id": 6219,
                    "name": "VariableDeclaration",
                    "src": "1993:22:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "depositNonce",
                      "overrides": null,
                      "scope": 6227,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 6220,
                        "name": "ElementaryTypeName",
                        "src": "2025:6:34"
                      }
                    ],
                    "id": 6221,
                    "name": "VariableDeclaration",
                    "src": "2025:20:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "status",
                      "overrides": null,
                      "scope": 6227,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "enum Bridge.ProposalStatus",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "ProposalStatus",
                          "referencedDeclaration": 6158,
                          "type": "enum Bridge.ProposalStatus"
                        },
                        "id": 6222,
                        "name": "UserDefinedTypeName",
                        "src": "2055:14:34"
                      }
                    ],
                    "id": 6223,
                    "name": "VariableDeclaration",
                    "src": "2055:21:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "dataHash",
                      "overrides": null,
                      "scope": 6227,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6224,
                        "name": "ElementaryTypeName",
                        "src": "2086:7:34"
                      }
                    ],
                    "id": 6225,
                    "name": "VariableDeclaration",
                    "src": "2086:16:34"
                  }
                ],
                "id": 6226,
                "name": "ParameterList",
                "src": "1983:125:34"
              }
            ],
            "id": 6227,
            "name": "EventDefinition",
            "src": "1965:144:34"
          },
          {
            "attributes": {
              "anonymous": false,
              "documentation": null,
              "name": "FailedHandlerExecution"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "lowLevelData",
                      "overrides": null,
                      "scope": 6231,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 6228,
                        "name": "ElementaryTypeName",
                        "src": "2152:5:34"
                      }
                    ],
                    "id": 6229,
                    "name": "VariableDeclaration",
                    "src": "2152:18:34"
                  }
                ],
                "id": 6230,
                "name": "ParameterList",
                "src": "2142:34:34"
              }
            ],
            "id": 6231,
            "name": "EventDefinition",
            "src": "2114:63:34"
          },
          {
            "attributes": {
              "constant": true,
              "functionSelector": "926d7d7f",
              "mutability": "constant",
              "name": "RELAYER_ROLE",
              "overrides": null,
              "scope": 7346,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 6232,
                "name": "ElementaryTypeName",
                "src": "2183:7:34"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "isStructConstructorCall": false,
                  "lValueRequested": false,
                  "names": [
                    null
                  ],
                  "tryCall": false,
                  "type": "bytes32",
                  "type_conversion": false
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_stringliteral_e2b7fb3b832174769106daebcfd6d1970523240dda11281102db9363b83b0dc4",
                          "typeString": "literal_string \"RELAYER_ROLE\""
                        }
                      ],
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": -8,
                      "type": "function (bytes memory) pure returns (bytes32)",
                      "value": "keccak256"
                    },
                    "id": 6233,
                    "name": "Identifier",
                    "src": "2222:9:34"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "hexvalue": "52454c415945525f524f4c45",
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "subdenomination": null,
                      "token": "string",
                      "type": "literal_string \"RELAYER_ROLE\"",
                      "value": "RELAYER_ROLE"
                    },
                    "id": 6234,
                    "name": "Literal",
                    "src": "2232:14:34"
                  }
                ],
                "id": 6235,
                "name": "FunctionCall",
                "src": "2222:25:34"
              }
            ],
            "id": 6236,
            "name": "VariableDeclaration",
            "src": "2183:64:34"
          },
          {
            "attributes": {
              "documentation": null,
              "name": "onlyAdmin",
              "overrides": null,
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6237,
                "name": "ParameterList",
                "src": "2272:2:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6289,
                              "type": "function () view",
                              "value": "_onlyAdmin"
                            },
                            "id": 6238,
                            "name": "Identifier",
                            "src": "2285:10:34"
                          }
                        ],
                        "id": 6239,
                        "name": "FunctionCall",
                        "src": "2285:12:34"
                      }
                    ],
                    "id": 6240,
                    "name": "ExpressionStatement",
                    "src": "2285:12:34"
                  },
                  {
                    "id": 6241,
                    "name": "PlaceholderStatement",
                    "src": "2307:1:34"
                  }
                ],
                "id": 6242,
                "name": "Block",
                "src": "2275:40:34"
              }
            ],
            "id": 6243,
            "name": "ModifierDefinition",
            "src": "2254:61:34"
          },
          {
            "attributes": {
              "documentation": null,
              "name": "onlyAdminOrRelayer",
              "overrides": null,
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6244,
                "name": "ParameterList",
                "src": "2348:2:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6276,
                              "type": "function () view",
                              "value": "_onlyAdminOrRelayer"
                            },
                            "id": 6245,
                            "name": "Identifier",
                            "src": "2361:19:34"
                          }
                        ],
                        "id": 6246,
                        "name": "FunctionCall",
                        "src": "2361:21:34"
                      }
                    ],
                    "id": 6247,
                    "name": "ExpressionStatement",
                    "src": "2361:21:34"
                  },
                  {
                    "id": 6248,
                    "name": "PlaceholderStatement",
                    "src": "2392:1:34"
                  }
                ],
                "id": 6249,
                "name": "Block",
                "src": "2351:49:34"
              }
            ],
            "id": 6250,
            "name": "ModifierDefinition",
            "src": "2321:79:34"
          },
          {
            "attributes": {
              "documentation": null,
              "name": "onlyRelayers",
              "overrides": null,
              "virtual": false,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6251,
                "name": "ParameterList",
                "src": "2427:2:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6302,
                              "type": "function () view",
                              "value": "_onlyRelayers"
                            },
                            "id": 6252,
                            "name": "Identifier",
                            "src": "2440:13:34"
                          }
                        ],
                        "id": 6253,
                        "name": "FunctionCall",
                        "src": "2440:15:34"
                      }
                    ],
                    "id": 6254,
                    "name": "ExpressionStatement",
                    "src": "2440:15:34"
                  },
                  {
                    "id": 6255,
                    "name": "PlaceholderStatement",
                    "src": "2465:1:34"
                  }
                ],
                "id": 6256,
                "name": "Block",
                "src": "2430:43:34"
              }
            ],
            "id": 6257,
            "name": "ModifierDefinition",
            "src": "2406:67:34"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_onlyAdminOrRelayer",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6258,
                "name": "ParameterList",
                "src": "2507:2:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6259,
                "name": "ParameterList",
                "src": "2523:0:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_060530e99bec4f476b8f8f370f65f741cac486899cd6c35c4dd2e82720711afe",
                                  "typeString": "literal_string \"sender is not relayer or admin\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6260,
                            "name": "Identifier",
                            "src": "2533:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "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
                                  ],
                                  "tryCall": false,
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 9921,
                                      "type": "function (bytes32,address) view returns (bool)",
                                      "value": "hasRole"
                                    },
                                    "id": 6261,
                                    "name": "Identifier",
                                    "src": "2541:7:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 9884,
                                      "type": "bytes32",
                                      "value": "DEFAULT_ADMIN_ROLE"
                                    },
                                    "id": 6262,
                                    "name": "Identifier",
                                    "src": "2549:18:34"
                                  },
                                  {
                                    "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": -15,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 6263,
                                        "name": "Identifier",
                                        "src": "2569:3:34"
                                      }
                                    ],
                                    "id": 6264,
                                    "name": "MemberAccess",
                                    "src": "2569:10:34"
                                  }
                                ],
                                "id": 6265,
                                "name": "FunctionCall",
                                "src": "2541:39:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 9921,
                                      "type": "function (bytes32,address) view returns (bool)",
                                      "value": "hasRole"
                                    },
                                    "id": 6266,
                                    "name": "Identifier",
                                    "src": "2584:7:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6236,
                                      "type": "bytes32",
                                      "value": "RELAYER_ROLE"
                                    },
                                    "id": 6267,
                                    "name": "Identifier",
                                    "src": "2592:12:34"
                                  },
                                  {
                                    "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": -15,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 6268,
                                        "name": "Identifier",
                                        "src": "2606:3:34"
                                      }
                                    ],
                                    "id": 6269,
                                    "name": "MemberAccess",
                                    "src": "2606:10:34"
                                  }
                                ],
                                "id": 6270,
                                "name": "FunctionCall",
                                "src": "2584:33:34"
                              }
                            ],
                            "id": 6271,
                            "name": "BinaryOperation",
                            "src": "2541:76:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "73656e646572206973206e6f742072656c61796572206f722061646d696e",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"sender is not relayer or admin\"",
                              "value": "sender is not relayer or admin"
                            },
                            "id": 6272,
                            "name": "Literal",
                            "src": "2631:32:34"
                          }
                        ],
                        "id": 6273,
                        "name": "FunctionCall",
                        "src": "2533:131:34"
                      }
                    ],
                    "id": 6274,
                    "name": "ExpressionStatement",
                    "src": "2533:131:34"
                  }
                ],
                "id": 6275,
                "name": "Block",
                "src": "2523:148:34"
              }
            ],
            "id": 6276,
            "name": "FunctionDefinition",
            "src": "2479:192:34"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_onlyAdmin",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6277,
                "name": "ParameterList",
                "src": "2696:2:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6278,
                "name": "ParameterList",
                "src": "2712:0:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_cccb3b305edc7308d7027b1001041a46b235f7d3213d690bb469676069d9b205",
                                  "typeString": "literal_string \"sender doesn't have admin role\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6279,
                            "name": "Identifier",
                            "src": "2722:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9921,
                                  "type": "function (bytes32,address) view returns (bool)",
                                  "value": "hasRole"
                                },
                                "id": 6280,
                                "name": "Identifier",
                                "src": "2730:7:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9884,
                                  "type": "bytes32",
                                  "value": "DEFAULT_ADMIN_ROLE"
                                },
                                "id": 6281,
                                "name": "Identifier",
                                "src": "2738:18:34"
                              },
                              {
                                "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": -15,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 6282,
                                    "name": "Identifier",
                                    "src": "2758:3:34"
                                  }
                                ],
                                "id": 6283,
                                "name": "MemberAccess",
                                "src": "2758:10:34"
                              }
                            ],
                            "id": 6284,
                            "name": "FunctionCall",
                            "src": "2730:39:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "73656e64657220646f65736e277420686176652061646d696e20726f6c65",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"sender doesn't have admin role\"",
                              "value": "sender doesn't have admin role"
                            },
                            "id": 6285,
                            "name": "Literal",
                            "src": "2771:32:34"
                          }
                        ],
                        "id": 6286,
                        "name": "FunctionCall",
                        "src": "2722:82:34"
                      }
                    ],
                    "id": 6287,
                    "name": "ExpressionStatement",
                    "src": "2722:82:34"
                  }
                ],
                "id": 6288,
                "name": "Block",
                "src": "2712:99:34"
              }
            ],
            "id": 6289,
            "name": "FunctionDefinition",
            "src": "2677:134:34"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_onlyRelayers",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6290,
                "name": "ParameterList",
                "src": "2839:2:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6291,
                "name": "ParameterList",
                "src": "2855:0:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_c5edc249083609d56bd00194353566fb7b8c09e436c3268ab57a56188319b6d4",
                                  "typeString": "literal_string \"sender doesn't have relayer role\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6292,
                            "name": "Identifier",
                            "src": "2865:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9921,
                                  "type": "function (bytes32,address) view returns (bool)",
                                  "value": "hasRole"
                                },
                                "id": 6293,
                                "name": "Identifier",
                                "src": "2873:7:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6236,
                                  "type": "bytes32",
                                  "value": "RELAYER_ROLE"
                                },
                                "id": 6294,
                                "name": "Identifier",
                                "src": "2881:12:34"
                              },
                              {
                                "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": -15,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 6295,
                                    "name": "Identifier",
                                    "src": "2895:3:34"
                                  }
                                ],
                                "id": 6296,
                                "name": "MemberAccess",
                                "src": "2895:10:34"
                              }
                            ],
                            "id": 6297,
                            "name": "FunctionCall",
                            "src": "2873:33:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "73656e64657220646f65736e277420686176652072656c6179657220726f6c65",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"sender doesn't have relayer role\"",
                              "value": "sender doesn't have relayer role"
                            },
                            "id": 6298,
                            "name": "Literal",
                            "src": "2908:34:34"
                          }
                        ],
                        "id": 6299,
                        "name": "FunctionCall",
                        "src": "2865:78:34"
                      }
                    ],
                    "id": 6300,
                    "name": "ExpressionStatement",
                    "src": "2865:78:34"
                  }
                ],
                "id": 6301,
                "name": "Block",
                "src": "2855:95:34"
              }
            ],
            "id": 6302,
            "name": "FunctionDefinition",
            "src": "2817:133:34"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_relayerBit",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "relayer",
                      "overrides": null,
                      "scope": 6324,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6303,
                        "name": "ElementaryTypeName",
                        "src": "2977:7:34"
                      }
                    ],
                    "id": 6304,
                    "name": "VariableDeclaration",
                    "src": "2977:15:34"
                  }
                ],
                "id": 6305,
                "name": "ParameterList",
                "src": "2976:17:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 6324,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 6306,
                        "name": "ElementaryTypeName",
                        "src": "3015:4:34"
                      }
                    ],
                    "id": 6307,
                    "name": "VariableDeclaration",
                    "src": "3015:4:34"
                  }
                ],
                "id": 6308,
                "name": "ParameterList",
                "src": "3014:6:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6308
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<<",
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint",
                                      "type": null
                                    },
                                    "id": 6309,
                                    "name": "ElementaryTypeName",
                                    "src": "3038:4:34"
                                  }
                                ],
                                "id": 6310,
                                "name": "ElementaryTypeNameExpression",
                                "src": "3038:4:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 6311,
                                "name": "Literal",
                                "src": "3043:1:34"
                              }
                            ],
                            "id": 6312,
                            "name": "FunctionCall",
                            "src": "3038:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 10361,
                                  "type": "function (uint256,uint256) pure returns (uint256)",
                                  "value": "sub"
                                },
                                "id": 6313,
                                "name": "Identifier",
                                "src": "3049:3:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "getRoleMemberIndex",
                                      "referencedDeclaration": 9982,
                                      "type": "function (bytes32,address) view returns (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 10149,
                                          "type": "type(contract AccessControl)",
                                          "value": "AccessControl"
                                        },
                                        "id": 6314,
                                        "name": "Identifier",
                                        "src": "3053:13:34"
                                      }
                                    ],
                                    "id": 6315,
                                    "name": "MemberAccess",
                                    "src": "3053:32:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6236,
                                      "type": "bytes32",
                                      "value": "RELAYER_ROLE"
                                    },
                                    "id": 6316,
                                    "name": "Identifier",
                                    "src": "3086:12:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6304,
                                      "type": "address",
                                      "value": "relayer"
                                    },
                                    "id": 6317,
                                    "name": "Identifier",
                                    "src": "3100:7:34"
                                  }
                                ],
                                "id": 6318,
                                "name": "FunctionCall",
                                "src": "3053:55:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 6319,
                                "name": "Literal",
                                "src": "3110:1:34"
                              }
                            ],
                            "id": 6320,
                            "name": "FunctionCall",
                            "src": "3049:63:34"
                          }
                        ],
                        "id": 6321,
                        "name": "BinaryOperation",
                        "src": "3038:74:34"
                      }
                    ],
                    "id": 6322,
                    "name": "Return",
                    "src": "3031:81:34"
                  }
                ],
                "id": 6323,
                "name": "Block",
                "src": "3021:98:34"
              }
            ],
            "id": 6324,
            "name": "FunctionDefinition",
            "src": "2956:163:34"
          },
          {
            "attributes": {
              "documentation": null,
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_hasVoted",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "private"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "proposal",
                      "overrides": null,
                      "scope": 6347,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct Bridge.Proposal",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Proposal",
                          "referencedDeclaration": 6167,
                          "type": "struct Bridge.Proposal"
                        },
                        "id": 6325,
                        "name": "UserDefinedTypeName",
                        "src": "3144:8:34"
                      }
                    ],
                    "id": 6326,
                    "name": "VariableDeclaration",
                    "src": "3144:24:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "relayer",
                      "overrides": null,
                      "scope": 6347,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6327,
                        "name": "ElementaryTypeName",
                        "src": "3170:7:34"
                      }
                    ],
                    "id": 6328,
                    "name": "VariableDeclaration",
                    "src": "3170:15:34"
                  }
                ],
                "id": 6329,
                "name": "ParameterList",
                "src": "3143:43:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 6347,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 6330,
                        "name": "ElementaryTypeName",
                        "src": "3208:4:34"
                      }
                    ],
                    "id": 6331,
                    "name": "VariableDeclaration",
                    "src": "3208:4:34"
                  }
                ],
                "id": 6332,
                "name": "ParameterList",
                "src": "3207:6:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6332
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": ">",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "&",
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6324,
                                          "type": "function (address) view returns (uint256)",
                                          "value": "_relayerBit"
                                        },
                                        "id": 6333,
                                        "name": "Identifier",
                                        "src": "3232:11:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6328,
                                          "type": "address",
                                          "value": "relayer"
                                        },
                                        "id": 6334,
                                        "name": "Identifier",
                                        "src": "3244:7:34"
                                      }
                                    ],
                                    "id": 6335,
                                    "name": "FunctionCall",
                                    "src": "3232:20:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint200",
                                              "typeString": "uint200"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint256)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint",
                                              "type": null
                                            },
                                            "id": 6336,
                                            "name": "ElementaryTypeName",
                                            "src": "3255:4:34"
                                          }
                                        ],
                                        "id": 6337,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "3255:4:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_yesVotes",
                                          "referencedDeclaration": 6162,
                                          "type": "uint200"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6326,
                                              "type": "struct Bridge.Proposal memory",
                                              "value": "proposal"
                                            },
                                            "id": 6338,
                                            "name": "Identifier",
                                            "src": "3260:8:34"
                                          }
                                        ],
                                        "id": 6339,
                                        "name": "MemberAccess",
                                        "src": "3260:18:34"
                                      }
                                    ],
                                    "id": 6340,
                                    "name": "FunctionCall",
                                    "src": "3255:24:34"
                                  }
                                ],
                                "id": 6341,
                                "name": "BinaryOperation",
                                "src": "3232:47:34"
                              }
                            ],
                            "id": 6342,
                            "name": "TupleExpression",
                            "src": "3231:49:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 6343,
                            "name": "Literal",
                            "src": "3283:1:34"
                          }
                        ],
                        "id": 6344,
                        "name": "BinaryOperation",
                        "src": "3231:53:34"
                      }
                    ],
                    "id": 6345,
                    "name": "Return",
                    "src": "3224:60:34"
                  }
                ],
                "id": 6346,
                "name": "Block",
                "src": "3214:77:34"
              }
            ],
            "id": 6347,
            "name": "FunctionDefinition",
            "src": "3125:166:34"
          },
          {
            "attributes": {
              "implemented": true,
              "isConstructor": true,
              "kind": "constructor",
              "modifiers": [
                null
              ],
              "name": "",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Initializes Bridge, creates and grants {msg.sender} the admin role,\ncreates and grants {initialRelayers} the relayer role.\n@param domainID ID of chain the Bridge contract exists on.\n@param initialRelayers Addresses that should be initially granted the relayer role.\n@param initialRelayerThreshold Number of votes needed for a deposit proposal to be considered passed."
                },
                "id": 6348,
                "name": "StructuredDocumentation",
                "src": "3297:427:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "domainID",
                      "overrides": null,
                      "scope": 6410,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 6349,
                        "name": "ElementaryTypeName",
                        "src": "3742:5:34"
                      }
                    ],
                    "id": 6350,
                    "name": "VariableDeclaration",
                    "src": "3742:14:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "initialRelayers",
                      "overrides": null,
                      "scope": 6410,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "address[]",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "address[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 6351,
                            "name": "ElementaryTypeName",
                            "src": "3758:7:34"
                          }
                        ],
                        "id": 6352,
                        "name": "ArrayTypeName",
                        "src": "3758:9:34"
                      }
                    ],
                    "id": 6353,
                    "name": "VariableDeclaration",
                    "src": "3758:32:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "initialRelayerThreshold",
                      "overrides": null,
                      "scope": 6410,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6354,
                        "name": "ElementaryTypeName",
                        "src": "3792:7:34"
                      }
                    ],
                    "id": 6355,
                    "name": "VariableDeclaration",
                    "src": "3792:31:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "fee",
                      "overrides": null,
                      "scope": 6410,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6356,
                        "name": "ElementaryTypeName",
                        "src": "3825:7:34"
                      }
                    ],
                    "id": 6357,
                    "name": "VariableDeclaration",
                    "src": "3825:11:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "expiry",
                      "overrides": null,
                      "scope": 6410,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6358,
                        "name": "ElementaryTypeName",
                        "src": "3838:7:34"
                      }
                    ],
                    "id": 6359,
                    "name": "VariableDeclaration",
                    "src": "3838:14:34"
                  }
                ],
                "id": 6360,
                "name": "ParameterList",
                "src": "3741:112:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6361,
                "name": "ParameterList",
                "src": "3861:0:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6146,
                              "type": "uint8",
                              "value": "_domainID"
                            },
                            "id": 6362,
                            "name": "Identifier",
                            "src": "3871:9:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6350,
                              "type": "uint8",
                              "value": "domainID"
                            },
                            "id": 6363,
                            "name": "Identifier",
                            "src": "3883:8:34"
                          }
                        ],
                        "id": 6364,
                        "name": "Assignment",
                        "src": "3871:20:34"
                      }
                    ],
                    "id": 6365,
                    "name": "ExpressionStatement",
                    "src": "3871:20:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6148,
                              "type": "uint8",
                              "value": "_relayerThreshold"
                            },
                            "id": 6366,
                            "name": "Identifier",
                            "src": "3901:17:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint8",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "toUint8",
                                  "referencedDeclaration": 10340,
                                  "type": "function (uint256) pure returns (uint8)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6355,
                                      "type": "uint256",
                                      "value": "initialRelayerThreshold"
                                    },
                                    "id": 6367,
                                    "name": "Identifier",
                                    "src": "3921:23:34"
                                  }
                                ],
                                "id": 6368,
                                "name": "MemberAccess",
                                "src": "3921:31:34"
                              }
                            ],
                            "id": 6369,
                            "name": "FunctionCall",
                            "src": "3921:33:34"
                          }
                        ],
                        "id": 6370,
                        "name": "Assignment",
                        "src": "3901:53:34"
                      }
                    ],
                    "id": 6371,
                    "name": "ExpressionStatement",
                    "src": "3901:53:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint128"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6150,
                              "type": "uint128",
                              "value": "_fee"
                            },
                            "id": 6372,
                            "name": "Identifier",
                            "src": "3964:4:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint128",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "toUint128",
                                  "referencedDeclaration": 10296,
                                  "type": "function (uint256) pure returns (uint128)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6357,
                                      "type": "uint256",
                                      "value": "fee"
                                    },
                                    "id": 6373,
                                    "name": "Identifier",
                                    "src": "3971:3:34"
                                  }
                                ],
                                "id": 6374,
                                "name": "MemberAccess",
                                "src": "3971:13:34"
                              }
                            ],
                            "id": 6375,
                            "name": "FunctionCall",
                            "src": "3971:15:34"
                          }
                        ],
                        "id": 6376,
                        "name": "Assignment",
                        "src": "3964:22:34"
                      }
                    ],
                    "id": 6377,
                    "name": "ExpressionStatement",
                    "src": "3964:22:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint40"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6152,
                              "type": "uint40",
                              "value": "_expiry"
                            },
                            "id": 6378,
                            "name": "Identifier",
                            "src": "3996:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint40",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "toUint40",
                                  "referencedDeclaration": 10318,
                                  "type": "function (uint256) pure returns (uint40)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6359,
                                      "type": "uint256",
                                      "value": "expiry"
                                    },
                                    "id": 6379,
                                    "name": "Identifier",
                                    "src": "4006:6:34"
                                  }
                                ],
                                "id": 6380,
                                "name": "MemberAccess",
                                "src": "4006:15:34"
                              }
                            ],
                            "id": 6381,
                            "name": "FunctionCall",
                            "src": "4006:17:34"
                          }
                        ],
                        "id": 6382,
                        "name": "Assignment",
                        "src": "3996:27:34"
                      }
                    ],
                    "id": 6383,
                    "name": "ExpressionStatement",
                    "src": "3996:27:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10084,
                              "type": "function (bytes32,address)",
                              "value": "_setupRole"
                            },
                            "id": 6384,
                            "name": "Identifier",
                            "src": "4034:10:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9884,
                              "type": "bytes32",
                              "value": "DEFAULT_ADMIN_ROLE"
                            },
                            "id": 6385,
                            "name": "Identifier",
                            "src": "4045:18:34"
                          },
                          {
                            "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": -15,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 6386,
                                "name": "Identifier",
                                "src": "4065:3:34"
                              }
                            ],
                            "id": 6387,
                            "name": "MemberAccess",
                            "src": "4065:10:34"
                          }
                        ],
                        "id": 6388,
                        "name": "FunctionCall",
                        "src": "4034:42:34"
                      }
                    ],
                    "id": 6389,
                    "name": "ExpressionStatement",
                    "src": "4034:42:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            6391
                          ],
                          "initialValue": null
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "i",
                              "overrides": null,
                              "scope": 6408,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 6390,
                                "name": "ElementaryTypeName",
                                "src": "4092:7:34"
                              }
                            ],
                            "id": 6391,
                            "name": "VariableDeclaration",
                            "src": "4092:9:34"
                          }
                        ],
                        "id": 6392,
                        "name": "VariableDeclarationStatement",
                        "src": "4092:9:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6391,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 6393,
                            "name": "Identifier",
                            "src": "4103:1:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6353,
                                  "type": "address[] memory",
                                  "value": "initialRelayers"
                                },
                                "id": 6394,
                                "name": "Identifier",
                                "src": "4107:15:34"
                              }
                            ],
                            "id": 6395,
                            "name": "MemberAccess",
                            "src": "4107:22:34"
                          }
                        ],
                        "id": 6396,
                        "name": "BinaryOperation",
                        "src": "4103:26:34"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6391,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 6397,
                                "name": "Identifier",
                                "src": "4131:1:34"
                              }
                            ],
                            "id": 6398,
                            "name": "UnaryOperation",
                            "src": "4131:3:34"
                          }
                        ],
                        "id": 6399,
                        "name": "ExpressionStatement",
                        "src": "4131:3:34"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 10022,
                                      "type": "function (bytes32,address)",
                                      "value": "grantRole"
                                    },
                                    "id": 6400,
                                    "name": "Identifier",
                                    "src": "4150:9:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6236,
                                      "type": "bytes32",
                                      "value": "RELAYER_ROLE"
                                    },
                                    "id": 6401,
                                    "name": "Identifier",
                                    "src": "4160:12:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "address"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6353,
                                          "type": "address[] memory",
                                          "value": "initialRelayers"
                                        },
                                        "id": 6402,
                                        "name": "Identifier",
                                        "src": "4174:15:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6391,
                                          "type": "uint256",
                                          "value": "i"
                                        },
                                        "id": 6403,
                                        "name": "Identifier",
                                        "src": "4190:1:34"
                                      }
                                    ],
                                    "id": 6404,
                                    "name": "IndexAccess",
                                    "src": "4174:18:34"
                                  }
                                ],
                                "id": 6405,
                                "name": "FunctionCall",
                                "src": "4150:43:34"
                              }
                            ],
                            "id": 6406,
                            "name": "ExpressionStatement",
                            "src": "4150:43:34"
                          }
                        ],
                        "id": 6407,
                        "name": "Block",
                        "src": "4136:68:34"
                      }
                    ],
                    "id": 6408,
                    "name": "ForStatement",
                    "src": "4087:117:34"
                  }
                ],
                "id": 6409,
                "name": "Block",
                "src": "3861:349:34"
              }
            ],
            "id": 6410,
            "name": "FunctionDefinition",
            "src": "3729:481:34"
          },
          {
            "attributes": {
              "functionSelector": "7febe63f",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_hasVotedOnProposal",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Returns true if {relayer} has voted on {destNonce} {dataHash} proposal.\n@notice Naming left unchanged for backward compatibility.\n@param destNonce destinationDomainID + depositNonce of the proposal.\n@param dataHash Hash of data to be provided when deposit proposal is executed.\n@param relayer Address to check."
                },
                "id": 6411,
                "name": "StructuredDocumentation",
                "src": "4216:370:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "destNonce",
                      "overrides": null,
                      "scope": 6432,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint72",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint72",
                          "type": "uint72"
                        },
                        "id": 6412,
                        "name": "ElementaryTypeName",
                        "src": "4620:6:34"
                      }
                    ],
                    "id": 6413,
                    "name": "VariableDeclaration",
                    "src": "4620:16:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "dataHash",
                      "overrides": null,
                      "scope": 6432,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6414,
                        "name": "ElementaryTypeName",
                        "src": "4638:7:34"
                      }
                    ],
                    "id": 6415,
                    "name": "VariableDeclaration",
                    "src": "4638:16:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "relayer",
                      "overrides": null,
                      "scope": 6432,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6416,
                        "name": "ElementaryTypeName",
                        "src": "4656:7:34"
                      }
                    ],
                    "id": 6417,
                    "name": "VariableDeclaration",
                    "src": "4656:15:34"
                  }
                ],
                "id": 6418,
                "name": "ParameterList",
                "src": "4619:53:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 6432,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 6419,
                        "name": "ElementaryTypeName",
                        "src": "4693:4:34"
                      }
                    ],
                    "id": 6420,
                    "name": "VariableDeclaration",
                    "src": "4693:4:34"
                  }
                ],
                "id": 6421,
                "name": "ParameterList",
                "src": "4692:6:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6421
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_struct$_Proposal_$6167_storage",
                                  "typeString": "struct Bridge.Proposal storage ref"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6347,
                              "type": "function (struct Bridge.Proposal memory,address) view returns (bool)",
                              "value": "_hasVoted"
                            },
                            "id": 6422,
                            "name": "Identifier",
                            "src": "4716:9:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "struct Bridge.Proposal storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6181,
                                      "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))",
                                      "value": "_proposals"
                                    },
                                    "id": 6423,
                                    "name": "Identifier",
                                    "src": "4726:10:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6413,
                                      "type": "uint72",
                                      "value": "destNonce"
                                    },
                                    "id": 6424,
                                    "name": "Identifier",
                                    "src": "4737:9:34"
                                  }
                                ],
                                "id": 6425,
                                "name": "IndexAccess",
                                "src": "4726:21:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6415,
                                  "type": "bytes32",
                                  "value": "dataHash"
                                },
                                "id": 6426,
                                "name": "Identifier",
                                "src": "4748:8:34"
                              }
                            ],
                            "id": 6427,
                            "name": "IndexAccess",
                            "src": "4726:31:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6417,
                              "type": "address",
                              "value": "relayer"
                            },
                            "id": 6428,
                            "name": "Identifier",
                            "src": "4759:7:34"
                          }
                        ],
                        "id": 6429,
                        "name": "FunctionCall",
                        "src": "4716:51:34"
                      }
                    ],
                    "id": 6430,
                    "name": "Return",
                    "src": "4709:58:34"
                  }
                ],
                "id": 6431,
                "name": "Block",
                "src": "4699:75:34"
              }
            ],
            "id": 6432,
            "name": "FunctionDefinition",
            "src": "4591:183:34"
          },
          {
            "attributes": {
              "functionSelector": "541d5548",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "isRelayer",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Returns true if {relayer} has the relayer role.\n@param relayer Address to check."
                },
                "id": 6433,
                "name": "StructuredDocumentation",
                "src": "4780:116:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "relayer",
                      "overrides": null,
                      "scope": 6446,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6434,
                        "name": "ElementaryTypeName",
                        "src": "4920:7:34"
                      }
                    ],
                    "id": 6435,
                    "name": "VariableDeclaration",
                    "src": "4920:15:34"
                  }
                ],
                "id": 6436,
                "name": "ParameterList",
                "src": "4919:17:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 6446,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 6437,
                        "name": "ElementaryTypeName",
                        "src": "4960:4:34"
                      }
                    ],
                    "id": 6438,
                    "name": "VariableDeclaration",
                    "src": "4960:4:34"
                  }
                ],
                "id": 6439,
                "name": "ParameterList",
                "src": "4959:6:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6439
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bool",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9921,
                              "type": "function (bytes32,address) view returns (bool)",
                              "value": "hasRole"
                            },
                            "id": 6440,
                            "name": "Identifier",
                            "src": "4983:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6236,
                              "type": "bytes32",
                              "value": "RELAYER_ROLE"
                            },
                            "id": 6441,
                            "name": "Identifier",
                            "src": "4991:12:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6435,
                              "type": "address",
                              "value": "relayer"
                            },
                            "id": 6442,
                            "name": "Identifier",
                            "src": "5005:7:34"
                          }
                        ],
                        "id": 6443,
                        "name": "FunctionCall",
                        "src": "4983:30:34"
                      }
                    ],
                    "id": 6444,
                    "name": "Return",
                    "src": "4976:37:34"
                  }
                ],
                "id": 6445,
                "name": "Block",
                "src": "4966:54:34"
              }
            ],
            "id": 6446,
            "name": "FunctionDefinition",
            "src": "4901:119:34"
          },
          {
            "attributes": {
              "functionSelector": "5e1fab0f",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "renounceAdmin",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Removes admin role from {msg.sender} and grants it to {newAdmin}.\n@notice Only callable by an address that currently has the admin role.\n@param newAdmin Address that admin role will be granted to."
                },
                "id": 6447,
                "name": "StructuredDocumentation",
                "src": "5026:240:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "newAdmin",
                      "overrides": null,
                      "scope": 6474,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6448,
                        "name": "ElementaryTypeName",
                        "src": "5294:7:34"
                      }
                    ],
                    "id": 6449,
                    "name": "VariableDeclaration",
                    "src": "5294:16:34"
                  }
                ],
                "id": 6450,
                "name": "ParameterList",
                "src": "5293:18:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6453,
                "name": "ParameterList",
                "src": "5331:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6243,
                      "type": "modifier ()",
                      "value": "onlyAdmin"
                    },
                    "id": 6451,
                    "name": "Identifier",
                    "src": "5321:9:34"
                  }
                ],
                "id": 6452,
                "name": "ModifierInvocation",
                "src": "5321:9:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_ab1c5f98bafd089c448d0f437f7951a06dfd484be68434b4420ed4d39647c206",
                                  "typeString": "literal_string \"Cannot renounce oneself\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6454,
                            "name": "Identifier",
                            "src": "5341:7:34"
                          },
                          {
                            "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,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address payable"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": -15,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 6455,
                                    "name": "Identifier",
                                    "src": "5349:3:34"
                                  }
                                ],
                                "id": 6456,
                                "name": "MemberAccess",
                                "src": "5349:10:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6449,
                                  "type": "address",
                                  "value": "newAdmin"
                                },
                                "id": 6457,
                                "name": "Identifier",
                                "src": "5363:8:34"
                              }
                            ],
                            "id": 6458,
                            "name": "BinaryOperation",
                            "src": "5349:22:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43616e6e6f742072656e6f756e6365206f6e6573656c66",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Cannot renounce oneself\"",
                              "value": "Cannot renounce oneself"
                            },
                            "id": 6459,
                            "name": "Literal",
                            "src": "5373:25:34"
                          }
                        ],
                        "id": 6460,
                        "name": "FunctionCall",
                        "src": "5341:58:34"
                      }
                    ],
                    "id": 6461,
                    "name": "ExpressionStatement",
                    "src": "5341:58:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10022,
                              "type": "function (bytes32,address)",
                              "value": "grantRole"
                            },
                            "id": 6462,
                            "name": "Identifier",
                            "src": "5409:9:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9884,
                              "type": "bytes32",
                              "value": "DEFAULT_ADMIN_ROLE"
                            },
                            "id": 6463,
                            "name": "Identifier",
                            "src": "5419:18:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6449,
                              "type": "address",
                              "value": "newAdmin"
                            },
                            "id": 6464,
                            "name": "Identifier",
                            "src": "5439:8:34"
                          }
                        ],
                        "id": 6465,
                        "name": "FunctionCall",
                        "src": "5409:39:34"
                      }
                    ],
                    "id": 6466,
                    "name": "ExpressionStatement",
                    "src": "5409:39:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10070,
                              "type": "function (bytes32,address)",
                              "value": "renounceRole"
                            },
                            "id": 6467,
                            "name": "Identifier",
                            "src": "5458:12:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9884,
                              "type": "bytes32",
                              "value": "DEFAULT_ADMIN_ROLE"
                            },
                            "id": 6468,
                            "name": "Identifier",
                            "src": "5471:18:34"
                          },
                          {
                            "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": -15,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 6469,
                                "name": "Identifier",
                                "src": "5491:3:34"
                              }
                            ],
                            "id": 6470,
                            "name": "MemberAccess",
                            "src": "5491:10:34"
                          }
                        ],
                        "id": 6471,
                        "name": "FunctionCall",
                        "src": "5458:44:34"
                      }
                    ],
                    "id": 6472,
                    "name": "ExpressionStatement",
                    "src": "5458:44:34"
                  }
                ],
                "id": 6473,
                "name": "Block",
                "src": "5331:178:34"
              }
            ],
            "id": 6474,
            "name": "FunctionDefinition",
            "src": "5271:238:34"
          },
          {
            "attributes": {
              "functionSelector": "80ae1c28",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "adminPauseTransfers",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Pauses deposits, proposal creation and voting, and deposit executions.\n@notice Only callable by an address that currently has the admin role."
                },
                "id": 6475,
                "name": "StructuredDocumentation",
                "src": "5515:177:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6476,
                "name": "ParameterList",
                "src": "5725:2:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6479,
                "name": "ParameterList",
                "src": "5747:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6243,
                      "type": "modifier ()",
                      "value": "onlyAdmin"
                    },
                    "id": 6477,
                    "name": "Identifier",
                    "src": "5737:9:34"
                  }
                ],
                "id": 6478,
                "name": "ModifierInvocation",
                "src": "5737:9:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10233,
                              "type": "function ()",
                              "value": "_pause"
                            },
                            "id": 6480,
                            "name": "Identifier",
                            "src": "5757:6:34"
                          }
                        ],
                        "id": 6481,
                        "name": "FunctionCall",
                        "src": "5757:8:34"
                      }
                    ],
                    "id": 6482,
                    "name": "ExpressionStatement",
                    "src": "5757:8:34"
                  }
                ],
                "id": 6483,
                "name": "Block",
                "src": "5747:25:34"
              }
            ],
            "id": 6484,
            "name": "FunctionDefinition",
            "src": "5697:75:34"
          },
          {
            "attributes": {
              "functionSelector": "ffaac0eb",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "adminUnpauseTransfers",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Unpauses deposits, proposal creation and voting, and deposit executions.\n@notice Only callable by an address that currently has the admin role."
                },
                "id": 6485,
                "name": "StructuredDocumentation",
                "src": "5778:179:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6486,
                "name": "ParameterList",
                "src": "5992:2:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6489,
                "name": "ParameterList",
                "src": "6014:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6243,
                      "type": "modifier ()",
                      "value": "onlyAdmin"
                    },
                    "id": 6487,
                    "name": "Identifier",
                    "src": "6004:9:34"
                  }
                ],
                "id": 6488,
                "name": "ModifierInvocation",
                "src": "6004:9:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10249,
                              "type": "function ()",
                              "value": "_unpause"
                            },
                            "id": 6490,
                            "name": "Identifier",
                            "src": "6024:8:34"
                          }
                        ],
                        "id": 6491,
                        "name": "FunctionCall",
                        "src": "6024:10:34"
                      }
                    ],
                    "id": 6492,
                    "name": "ExpressionStatement",
                    "src": "6024:10:34"
                  }
                ],
                "id": 6493,
                "name": "Block",
                "src": "6014:27:34"
              }
            ],
            "id": 6494,
            "name": "FunctionDefinition",
            "src": "5962:79:34"
          },
          {
            "attributes": {
              "functionSelector": "4e056005",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "adminChangeRelayerThreshold",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Modifies the number of votes required for a proposal to be considered passed.\n@notice Only callable by an address that currently has the admin role.\n@param newThreshold Value {_relayerThreshold} will be changed to.\n@notice Emits {RelayerThresholdChanged} event."
                },
                "id": 6495,
                "name": "StructuredDocumentation",
                "src": "6047:313:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "newThreshold",
                      "overrides": null,
                      "scope": 6513,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6496,
                        "name": "ElementaryTypeName",
                        "src": "6402:7:34"
                      }
                    ],
                    "id": 6497,
                    "name": "VariableDeclaration",
                    "src": "6402:20:34"
                  }
                ],
                "id": 6498,
                "name": "ParameterList",
                "src": "6401:22:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6501,
                "name": "ParameterList",
                "src": "6443:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6243,
                      "type": "modifier ()",
                      "value": "onlyAdmin"
                    },
                    "id": 6499,
                    "name": "Identifier",
                    "src": "6433:9:34"
                  }
                ],
                "id": 6500,
                "name": "ModifierInvocation",
                "src": "6433:9:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint8"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6148,
                              "type": "uint8",
                              "value": "_relayerThreshold"
                            },
                            "id": 6502,
                            "name": "Identifier",
                            "src": "6453:17:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint8",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "toUint8",
                                  "referencedDeclaration": 10340,
                                  "type": "function (uint256) pure returns (uint8)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6497,
                                      "type": "uint256",
                                      "value": "newThreshold"
                                    },
                                    "id": 6503,
                                    "name": "Identifier",
                                    "src": "6473:12:34"
                                  }
                                ],
                                "id": 6504,
                                "name": "MemberAccess",
                                "src": "6473:20:34"
                              }
                            ],
                            "id": 6505,
                            "name": "FunctionCall",
                            "src": "6473:22:34"
                          }
                        ],
                        "id": 6506,
                        "name": "Assignment",
                        "src": "6453:42:34"
                      }
                    ],
                    "id": 6507,
                    "name": "ExpressionStatement",
                    "src": "6453:42:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6185,
                              "type": "function (uint256)",
                              "value": "RelayerThresholdChanged"
                            },
                            "id": 6508,
                            "name": "Identifier",
                            "src": "6510:23:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6497,
                              "type": "uint256",
                              "value": "newThreshold"
                            },
                            "id": 6509,
                            "name": "Identifier",
                            "src": "6534:12:34"
                          }
                        ],
                        "id": 6510,
                        "name": "FunctionCall",
                        "src": "6510:37:34"
                      }
                    ],
                    "id": 6511,
                    "name": "EmitStatement",
                    "src": "6505:42:34"
                  }
                ],
                "id": 6512,
                "name": "Block",
                "src": "6443:111:34"
              }
            ],
            "id": 6513,
            "name": "FunctionDefinition",
            "src": "6365:189:34"
          },
          {
            "attributes": {
              "functionSelector": "cdb0f73a",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "adminAddRelayer",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Grants {relayerAddress} the relayer role.\n@notice Only callable by an address that currently has the admin role, which is\nchecked in grantRole().\n@param relayerAddress Address of relayer to be added.\n@notice Emits {RelayerAdded} event."
                },
                "id": 6514,
                "name": "StructuredDocumentation",
                "src": "6560:303:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "relayerAddress",
                      "overrides": null,
                      "scope": 6546,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6515,
                        "name": "ElementaryTypeName",
                        "src": "6893:7:34"
                      }
                    ],
                    "id": 6516,
                    "name": "VariableDeclaration",
                    "src": "6893:22:34"
                  }
                ],
                "id": 6517,
                "name": "ParameterList",
                "src": "6892:24:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6518,
                "name": "ParameterList",
                "src": "6926:0:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_8513154392cb347d26f1716c23a55342a9b762f4522b7062343455b658c92c85",
                                  "typeString": "literal_string \"addr already has relayer role!\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6519,
                            "name": "Identifier",
                            "src": "6936:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!",
                              "prefix": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 9921,
                                      "type": "function (bytes32,address) view returns (bool)",
                                      "value": "hasRole"
                                    },
                                    "id": 6520,
                                    "name": "Identifier",
                                    "src": "6945:7:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6236,
                                      "type": "bytes32",
                                      "value": "RELAYER_ROLE"
                                    },
                                    "id": 6521,
                                    "name": "Identifier",
                                    "src": "6953:12:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6516,
                                      "type": "address",
                                      "value": "relayerAddress"
                                    },
                                    "id": 6522,
                                    "name": "Identifier",
                                    "src": "6967:14:34"
                                  }
                                ],
                                "id": 6523,
                                "name": "FunctionCall",
                                "src": "6945:37:34"
                              }
                            ],
                            "id": 6524,
                            "name": "UnaryOperation",
                            "src": "6944:38:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "6164647220616c7265616479206861732072656c6179657220726f6c6521",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"addr already has relayer role!\"",
                              "value": "addr already has relayer role!"
                            },
                            "id": 6525,
                            "name": "Literal",
                            "src": "6984:32:34"
                          }
                        ],
                        "id": 6526,
                        "name": "FunctionCall",
                        "src": "6936:81:34"
                      }
                    ],
                    "id": 6527,
                    "name": "ExpressionStatement",
                    "src": "6936:81:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_18af44d6fca7942c3eba189fa880127576a658eb0cb6b7b50f3633b08b5da89a",
                                  "typeString": "literal_string \"relayers limit reached\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6528,
                            "name": "Identifier",
                            "src": "7027:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "<",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        null
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6738,
                                      "type": "function () view returns (uint256)",
                                      "value": "_totalRelayers"
                                    },
                                    "id": 6529,
                                    "name": "Identifier",
                                    "src": "7035:14:34"
                                  }
                                ],
                                "id": 6530,
                                "name": "FunctionCall",
                                "src": "7035:16:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6144,
                                  "type": "uint256",
                                  "value": "MAX_RELAYERS"
                                },
                                "id": 6531,
                                "name": "Identifier",
                                "src": "7054:12:34"
                              }
                            ],
                            "id": 6532,
                            "name": "BinaryOperation",
                            "src": "7035:31:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "72656c6179657273206c696d69742072656163686564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"relayers limit reached\"",
                              "value": "relayers limit reached"
                            },
                            "id": 6533,
                            "name": "Literal",
                            "src": "7068:24:34"
                          }
                        ],
                        "id": 6534,
                        "name": "FunctionCall",
                        "src": "7027:66:34"
                      }
                    ],
                    "id": 6535,
                    "name": "ExpressionStatement",
                    "src": "7027:66:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10022,
                              "type": "function (bytes32,address)",
                              "value": "grantRole"
                            },
                            "id": 6536,
                            "name": "Identifier",
                            "src": "7103:9:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6236,
                              "type": "bytes32",
                              "value": "RELAYER_ROLE"
                            },
                            "id": 6537,
                            "name": "Identifier",
                            "src": "7113:12:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6516,
                              "type": "address",
                              "value": "relayerAddress"
                            },
                            "id": 6538,
                            "name": "Identifier",
                            "src": "7127:14:34"
                          }
                        ],
                        "id": 6539,
                        "name": "FunctionCall",
                        "src": "7103:39:34"
                      }
                    ],
                    "id": 6540,
                    "name": "ExpressionStatement",
                    "src": "7103:39:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6189,
                              "type": "function (address)",
                              "value": "RelayerAdded"
                            },
                            "id": 6541,
                            "name": "Identifier",
                            "src": "7157:12:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6516,
                              "type": "address",
                              "value": "relayerAddress"
                            },
                            "id": 6542,
                            "name": "Identifier",
                            "src": "7170:14:34"
                          }
                        ],
                        "id": 6543,
                        "name": "FunctionCall",
                        "src": "7157:28:34"
                      }
                    ],
                    "id": 6544,
                    "name": "EmitStatement",
                    "src": "7152:33:34"
                  }
                ],
                "id": 6545,
                "name": "Block",
                "src": "6926:266:34"
              }
            ],
            "id": 6546,
            "name": "FunctionDefinition",
            "src": "6868:324:34"
          },
          {
            "attributes": {
              "functionSelector": "9d82dd63",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "adminRemoveRelayer",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Removes relayer role for {relayerAddress}.\n@notice Only callable by an address that currently has the admin role, which is\nchecked in revokeRole().\n@param relayerAddress Address of relayer to be removed.\n@notice Emits {RelayerRemoved} event."
                },
                "id": 6547,
                "name": "StructuredDocumentation",
                "src": "7198:309:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "relayerAddress",
                      "overrides": null,
                      "scope": 6570,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6548,
                        "name": "ElementaryTypeName",
                        "src": "7540:7:34"
                      }
                    ],
                    "id": 6549,
                    "name": "VariableDeclaration",
                    "src": "7540:22:34"
                  }
                ],
                "id": 6550,
                "name": "ParameterList",
                "src": "7539:24:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6551,
                "name": "ParameterList",
                "src": "7573:0:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_1399520dec2ce6448b61ea4bb9d4980c6bfff25cd5836058c07edd3d56f94864",
                                  "typeString": "literal_string \"addr doesn't have relayer role!\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6552,
                            "name": "Identifier",
                            "src": "7583:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 9921,
                                  "type": "function (bytes32,address) view returns (bool)",
                                  "value": "hasRole"
                                },
                                "id": 6553,
                                "name": "Identifier",
                                "src": "7591:7:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6236,
                                  "type": "bytes32",
                                  "value": "RELAYER_ROLE"
                                },
                                "id": 6554,
                                "name": "Identifier",
                                "src": "7599:12:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6549,
                                  "type": "address",
                                  "value": "relayerAddress"
                                },
                                "id": 6555,
                                "name": "Identifier",
                                "src": "7613:14:34"
                              }
                            ],
                            "id": 6556,
                            "name": "FunctionCall",
                            "src": "7591:37:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "6164647220646f65736e277420686176652072656c6179657220726f6c6521",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"addr doesn't have relayer role!\"",
                              "value": "addr doesn't have relayer role!"
                            },
                            "id": 6557,
                            "name": "Literal",
                            "src": "7630:33:34"
                          }
                        ],
                        "id": 6558,
                        "name": "FunctionCall",
                        "src": "7583:81:34"
                      }
                    ],
                    "id": 6559,
                    "name": "ExpressionStatement",
                    "src": "7583:81:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 10048,
                              "type": "function (bytes32,address)",
                              "value": "revokeRole"
                            },
                            "id": 6560,
                            "name": "Identifier",
                            "src": "7674:10:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6236,
                              "type": "bytes32",
                              "value": "RELAYER_ROLE"
                            },
                            "id": 6561,
                            "name": "Identifier",
                            "src": "7685:12:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6549,
                              "type": "address",
                              "value": "relayerAddress"
                            },
                            "id": 6562,
                            "name": "Identifier",
                            "src": "7699:14:34"
                          }
                        ],
                        "id": 6563,
                        "name": "FunctionCall",
                        "src": "7674:40:34"
                      }
                    ],
                    "id": 6564,
                    "name": "ExpressionStatement",
                    "src": "7674:40:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6193,
                              "type": "function (address)",
                              "value": "RelayerRemoved"
                            },
                            "id": 6565,
                            "name": "Identifier",
                            "src": "7729:14:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6549,
                              "type": "address",
                              "value": "relayerAddress"
                            },
                            "id": 6566,
                            "name": "Identifier",
                            "src": "7744:14:34"
                          }
                        ],
                        "id": 6567,
                        "name": "FunctionCall",
                        "src": "7729:30:34"
                      }
                    ],
                    "id": 6568,
                    "name": "EmitStatement",
                    "src": "7724:35:34"
                  }
                ],
                "id": 6569,
                "name": "Block",
                "src": "7573:193:34"
              }
            ],
            "id": 6570,
            "name": "FunctionDefinition",
            "src": "7512:254:34"
          },
          {
            "attributes": {
              "functionSelector": "cb10f215",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "adminSetResource",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Sets a new resource for handler contracts that use the IERCHandler interface,\nand maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param resourceID ResourceID to be used when making deposits.\n@param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed."
                },
                "id": 6571,
                "name": "StructuredDocumentation",
                "src": "7772:530:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "handlerAddress",
                      "overrides": null,
                      "scope": 6602,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6572,
                        "name": "ElementaryTypeName",
                        "src": "8333:7:34"
                      }
                    ],
                    "id": 6573,
                    "name": "VariableDeclaration",
                    "src": "8333:22:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "resourceID",
                      "overrides": null,
                      "scope": 6602,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6574,
                        "name": "ElementaryTypeName",
                        "src": "8357:7:34"
                      }
                    ],
                    "id": 6575,
                    "name": "VariableDeclaration",
                    "src": "8357:18:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "overrides": null,
                      "scope": 6602,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6576,
                        "name": "ElementaryTypeName",
                        "src": "8377:7:34"
                      }
                    ],
                    "id": 6577,
                    "name": "VariableDeclaration",
                    "src": "8377:20:34"
                  }
                ],
                "id": 6578,
                "name": "ParameterList",
                "src": "8332:66:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6581,
                "name": "ParameterList",
                "src": "8418:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6243,
                      "type": "modifier ()",
                      "value": "onlyAdmin"
                    },
                    "id": 6579,
                    "name": "Identifier",
                    "src": "8408:9:34"
                  }
                ],
                "id": 6580,
                "name": "ModifierInvocation",
                "src": "8408:9:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6175,
                                  "type": "mapping(bytes32 => address)",
                                  "value": "_resourceIDToHandlerAddress"
                                },
                                "id": 6582,
                                "name": "Identifier",
                                "src": "8428:27:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6575,
                                  "type": "bytes32",
                                  "value": "resourceID"
                                },
                                "id": 6583,
                                "name": "Identifier",
                                "src": "8456:10:34"
                              }
                            ],
                            "id": 6584,
                            "name": "IndexAccess",
                            "src": "8428:39:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6573,
                              "type": "address",
                              "value": "handlerAddress"
                            },
                            "id": 6585,
                            "name": "Identifier",
                            "src": "8470:14:34"
                          }
                        ],
                        "id": 6586,
                        "name": "Assignment",
                        "src": "8428:56:34"
                      }
                    ],
                    "id": 6587,
                    "name": "ExpressionStatement",
                    "src": "8428:56:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6589
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "handler",
                          "overrides": null,
                          "scope": 6601,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract IERCHandler",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "IERCHandler",
                              "referencedDeclaration": 9840,
                              "type": "contract IERCHandler"
                            },
                            "id": 6588,
                            "name": "UserDefinedTypeName",
                            "src": "8494:11:34"
                          }
                        ],
                        "id": 6589,
                        "name": "VariableDeclaration",
                        "src": "8494:19:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "contract IERCHandler",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9840,
                              "type": "type(contract IERCHandler)",
                              "value": "IERCHandler"
                            },
                            "id": 6590,
                            "name": "Identifier",
                            "src": "8516:11:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6573,
                              "type": "address",
                              "value": "handlerAddress"
                            },
                            "id": 6591,
                            "name": "Identifier",
                            "src": "8528:14:34"
                          }
                        ],
                        "id": 6592,
                        "name": "FunctionCall",
                        "src": "8516:27:34"
                      }
                    ],
                    "id": 6593,
                    "name": "VariableDeclarationStatement",
                    "src": "8494:49:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setResource",
                              "referencedDeclaration": 9827,
                              "type": "function (bytes32,address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6589,
                                  "type": "contract IERCHandler",
                                  "value": "handler"
                                },
                                "id": 6594,
                                "name": "Identifier",
                                "src": "8553:7:34"
                              }
                            ],
                            "id": 6596,
                            "name": "MemberAccess",
                            "src": "8553:19:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6575,
                              "type": "bytes32",
                              "value": "resourceID"
                            },
                            "id": 6597,
                            "name": "Identifier",
                            "src": "8573:10:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6577,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 6598,
                            "name": "Identifier",
                            "src": "8585:12:34"
                          }
                        ],
                        "id": 6599,
                        "name": "FunctionCall",
                        "src": "8553:45:34"
                      }
                    ],
                    "id": 6600,
                    "name": "ExpressionStatement",
                    "src": "8553:45:34"
                  }
                ],
                "id": 6601,
                "name": "Block",
                "src": "8418:187:34"
              }
            ],
            "id": 6602,
            "name": "FunctionDefinition",
            "src": "8307:298:34"
          },
          {
            "attributes": {
              "functionSelector": "5a1ad87c",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "adminSetGenericResource",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Sets a new resource for handler contracts that use the IGenericHandler interface,\nand maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param resourceID ResourceID to be used when making deposits.\n@param contractAddress Address of contract to be called when a deposit is made and a deposited is executed."
                },
                "id": 6603,
                "name": "StructuredDocumentation",
                "src": "8611:537:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "handlerAddress",
                      "overrides": null,
                      "scope": 6643,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6604,
                        "name": "ElementaryTypeName",
                        "src": "9195:7:34"
                      }
                    ],
                    "id": 6605,
                    "name": "VariableDeclaration",
                    "src": "9195:22:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "resourceID",
                      "overrides": null,
                      "scope": 6643,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6606,
                        "name": "ElementaryTypeName",
                        "src": "9227:7:34"
                      }
                    ],
                    "id": 6607,
                    "name": "VariableDeclaration",
                    "src": "9227:18:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "contractAddress",
                      "overrides": null,
                      "scope": 6643,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6608,
                        "name": "ElementaryTypeName",
                        "src": "9255:7:34"
                      }
                    ],
                    "id": 6609,
                    "name": "VariableDeclaration",
                    "src": "9255:23:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "depositFunctionSig",
                      "overrides": null,
                      "scope": 6643,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 6610,
                        "name": "ElementaryTypeName",
                        "src": "9288:6:34"
                      }
                    ],
                    "id": 6611,
                    "name": "VariableDeclaration",
                    "src": "9288:25:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "depositFunctionDepositerOffset",
                      "overrides": null,
                      "scope": 6643,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6612,
                        "name": "ElementaryTypeName",
                        "src": "9323:7:34"
                      }
                    ],
                    "id": 6613,
                    "name": "VariableDeclaration",
                    "src": "9323:38:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "executeFunctionSig",
                      "overrides": null,
                      "scope": 6643,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes4",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes4",
                          "type": "bytes4"
                        },
                        "id": 6614,
                        "name": "ElementaryTypeName",
                        "src": "9371:6:34"
                      }
                    ],
                    "id": 6615,
                    "name": "VariableDeclaration",
                    "src": "9371:25:34"
                  }
                ],
                "id": 6616,
                "name": "ParameterList",
                "src": "9185:217:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6619,
                "name": "ParameterList",
                "src": "9422:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6243,
                      "type": "modifier ()",
                      "value": "onlyAdmin"
                    },
                    "id": 6617,
                    "name": "Identifier",
                    "src": "9412:9:34"
                  }
                ],
                "id": 6618,
                "name": "ModifierInvocation",
                "src": "9412:9:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6175,
                                  "type": "mapping(bytes32 => address)",
                                  "value": "_resourceIDToHandlerAddress"
                                },
                                "id": 6620,
                                "name": "Identifier",
                                "src": "9432:27:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6607,
                                  "type": "bytes32",
                                  "value": "resourceID"
                                },
                                "id": 6621,
                                "name": "Identifier",
                                "src": "9460:10:34"
                              }
                            ],
                            "id": 6622,
                            "name": "IndexAccess",
                            "src": "9432:39:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6605,
                              "type": "address",
                              "value": "handlerAddress"
                            },
                            "id": 6623,
                            "name": "Identifier",
                            "src": "9474:14:34"
                          }
                        ],
                        "id": 6624,
                        "name": "Assignment",
                        "src": "9432:56:34"
                      }
                    ],
                    "id": 6625,
                    "name": "ExpressionStatement",
                    "src": "9432:56:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6627
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "handler",
                          "overrides": null,
                          "scope": 6642,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract IGenericHandler",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "IGenericHandler",
                              "referencedDeclaration": 9858,
                              "type": "contract IGenericHandler"
                            },
                            "id": 6626,
                            "name": "UserDefinedTypeName",
                            "src": "9498:15:34"
                          }
                        ],
                        "id": 6627,
                        "name": "VariableDeclaration",
                        "src": "9498:23:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "contract IGenericHandler",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9858,
                              "type": "type(contract IGenericHandler)",
                              "value": "IGenericHandler"
                            },
                            "id": 6628,
                            "name": "Identifier",
                            "src": "9524:15:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6605,
                              "type": "address",
                              "value": "handlerAddress"
                            },
                            "id": 6629,
                            "name": "Identifier",
                            "src": "9540:14:34"
                          }
                        ],
                        "id": 6630,
                        "name": "FunctionCall",
                        "src": "9524:31:34"
                      }
                    ],
                    "id": 6631,
                    "name": "VariableDeclarationStatement",
                    "src": "9498:57:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setResource",
                              "referencedDeclaration": 9857,
                              "type": "function (bytes32,address,bytes4,uint256,bytes4) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6627,
                                  "type": "contract IGenericHandler",
                                  "value": "handler"
                                },
                                "id": 6632,
                                "name": "Identifier",
                                "src": "9565:7:34"
                              }
                            ],
                            "id": 6634,
                            "name": "MemberAccess",
                            "src": "9565:19:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6607,
                              "type": "bytes32",
                              "value": "resourceID"
                            },
                            "id": 6635,
                            "name": "Identifier",
                            "src": "9585:10:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6609,
                              "type": "address",
                              "value": "contractAddress"
                            },
                            "id": 6636,
                            "name": "Identifier",
                            "src": "9597:15:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6611,
                              "type": "bytes4",
                              "value": "depositFunctionSig"
                            },
                            "id": 6637,
                            "name": "Identifier",
                            "src": "9614:18:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6613,
                              "type": "uint256",
                              "value": "depositFunctionDepositerOffset"
                            },
                            "id": 6638,
                            "name": "Identifier",
                            "src": "9634:30:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6615,
                              "type": "bytes4",
                              "value": "executeFunctionSig"
                            },
                            "id": 6639,
                            "name": "Identifier",
                            "src": "9666:18:34"
                          }
                        ],
                        "id": 6640,
                        "name": "FunctionCall",
                        "src": "9565:120:34"
                      }
                    ],
                    "id": 6641,
                    "name": "ExpressionStatement",
                    "src": "9565:120:34"
                  }
                ],
                "id": 6642,
                "name": "Block",
                "src": "9422:270:34"
              }
            ],
            "id": 6643,
            "name": "FunctionDefinition",
            "src": "9153:539:34"
          },
          {
            "attributes": {
              "functionSelector": "8c0c2631",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "adminSetBurnable",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Sets a resource as burnable for handler contracts that use the IERCHandler interface.\n@notice Only callable by an address that currently has the admin role.\n@param handlerAddress Address of handler resource will be set for.\n@param tokenAddress Address of contract to be called when a deposit is made and a deposited is executed."
                },
                "id": 6644,
                "name": "StructuredDocumentation",
                "src": "9698:380:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "handlerAddress",
                      "overrides": null,
                      "scope": 6666,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6645,
                        "name": "ElementaryTypeName",
                        "src": "10109:7:34"
                      }
                    ],
                    "id": 6646,
                    "name": "VariableDeclaration",
                    "src": "10109:22:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "tokenAddress",
                      "overrides": null,
                      "scope": 6666,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6647,
                        "name": "ElementaryTypeName",
                        "src": "10133:7:34"
                      }
                    ],
                    "id": 6648,
                    "name": "VariableDeclaration",
                    "src": "10133:20:34"
                  }
                ],
                "id": 6649,
                "name": "ParameterList",
                "src": "10108:46:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6652,
                "name": "ParameterList",
                "src": "10174:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6243,
                      "type": "modifier ()",
                      "value": "onlyAdmin"
                    },
                    "id": 6650,
                    "name": "Identifier",
                    "src": "10164:9:34"
                  }
                ],
                "id": 6651,
                "name": "ModifierInvocation",
                "src": "10164:9:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        6654
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "handler",
                          "overrides": null,
                          "scope": 6665,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract IERCHandler",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "IERCHandler",
                              "referencedDeclaration": 9840,
                              "type": "contract IERCHandler"
                            },
                            "id": 6653,
                            "name": "UserDefinedTypeName",
                            "src": "10184:11:34"
                          }
                        ],
                        "id": 6654,
                        "name": "VariableDeclaration",
                        "src": "10184:19:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "contract IERCHandler",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9840,
                              "type": "type(contract IERCHandler)",
                              "value": "IERCHandler"
                            },
                            "id": 6655,
                            "name": "Identifier",
                            "src": "10206:11:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6646,
                              "type": "address",
                              "value": "handlerAddress"
                            },
                            "id": 6656,
                            "name": "Identifier",
                            "src": "10218:14:34"
                          }
                        ],
                        "id": 6657,
                        "name": "FunctionCall",
                        "src": "10206:27:34"
                      }
                    ],
                    "id": 6658,
                    "name": "VariableDeclarationStatement",
                    "src": "10184:49:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "setBurnable",
                              "referencedDeclaration": 9833,
                              "type": "function (address) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6654,
                                  "type": "contract IERCHandler",
                                  "value": "handler"
                                },
                                "id": 6659,
                                "name": "Identifier",
                                "src": "10243:7:34"
                              }
                            ],
                            "id": 6661,
                            "name": "MemberAccess",
                            "src": "10243:19:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6648,
                              "type": "address",
                              "value": "tokenAddress"
                            },
                            "id": 6662,
                            "name": "Identifier",
                            "src": "10263:12:34"
                          }
                        ],
                        "id": 6663,
                        "name": "FunctionCall",
                        "src": "10243:33:34"
                      }
                    ],
                    "id": 6664,
                    "name": "ExpressionStatement",
                    "src": "10243:33:34"
                  }
                ],
                "id": 6665,
                "name": "Block",
                "src": "10174:109:34"
              }
            ],
            "id": 6666,
            "name": "FunctionDefinition",
            "src": "10083:200:34"
          },
          {
            "attributes": {
              "functionSelector": "edc20c3c",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "adminSetDepositNonce",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Sets the nonce for the specific domainID.\n@notice Only callable by an address that currently has the admin role.\n@param domainID Domain ID for increasing nonce.\n@param nonce The nonce value to be set."
                },
                "id": 6667,
                "name": "StructuredDocumentation",
                "src": "10289:252:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "domainID",
                      "overrides": null,
                      "scope": 6692,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 6668,
                        "name": "ElementaryTypeName",
                        "src": "10576:5:34"
                      }
                    ],
                    "id": 6669,
                    "name": "VariableDeclaration",
                    "src": "10576:14:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "nonce",
                      "overrides": null,
                      "scope": 6692,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 6670,
                        "name": "ElementaryTypeName",
                        "src": "10592:6:34"
                      }
                    ],
                    "id": 6671,
                    "name": "VariableDeclaration",
                    "src": "10592:12:34"
                  }
                ],
                "id": 6672,
                "name": "ParameterList",
                "src": "10575:30:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6675,
                "name": "ParameterList",
                "src": "10625:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6243,
                      "type": "modifier ()",
                      "value": "onlyAdmin"
                    },
                    "id": 6673,
                    "name": "Identifier",
                    "src": "10615:9:34"
                  }
                ],
                "id": 6674,
                "name": "ModifierInvocation",
                "src": "10615:9:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_7122f19c70cb188c6a2cee5166a6322c6e1f2aa7931cca0265fb30152aec34e8",
                                  "typeString": "literal_string \"Does not allow decrements of the nonce\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6676,
                            "name": "Identifier",
                            "src": "10635:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": ">",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6671,
                                  "type": "uint64",
                                  "value": "nonce"
                                },
                                "id": 6677,
                                "name": "Identifier",
                                "src": "10643:5:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "uint64"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6171,
                                      "type": "mapping(uint8 => uint64)",
                                      "value": "_depositCounts"
                                    },
                                    "id": 6678,
                                    "name": "Identifier",
                                    "src": "10651:14:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6669,
                                      "type": "uint8",
                                      "value": "domainID"
                                    },
                                    "id": 6679,
                                    "name": "Identifier",
                                    "src": "10666:8:34"
                                  }
                                ],
                                "id": 6680,
                                "name": "IndexAccess",
                                "src": "10651:24:34"
                              }
                            ],
                            "id": 6681,
                            "name": "BinaryOperation",
                            "src": "10643:32:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "446f6573206e6f7420616c6c6f772064656372656d656e7473206f6620746865206e6f6e6365",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Does not allow decrements of the nonce\"",
                              "value": "Does not allow decrements of the nonce"
                            },
                            "id": 6682,
                            "name": "Literal",
                            "src": "10677:40:34"
                          }
                        ],
                        "id": 6683,
                        "name": "FunctionCall",
                        "src": "10635:83:34"
                      }
                    ],
                    "id": 6684,
                    "name": "ExpressionStatement",
                    "src": "10635:83:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint64"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint64"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6171,
                                  "type": "mapping(uint8 => uint64)",
                                  "value": "_depositCounts"
                                },
                                "id": 6685,
                                "name": "Identifier",
                                "src": "10728:14:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6669,
                                  "type": "uint8",
                                  "value": "domainID"
                                },
                                "id": 6686,
                                "name": "Identifier",
                                "src": "10743:8:34"
                              }
                            ],
                            "id": 6687,
                            "name": "IndexAccess",
                            "src": "10728:24:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6671,
                              "type": "uint64",
                              "value": "nonce"
                            },
                            "id": 6688,
                            "name": "Identifier",
                            "src": "10755:5:34"
                          }
                        ],
                        "id": 6689,
                        "name": "Assignment",
                        "src": "10728:32:34"
                      }
                    ],
                    "id": 6690,
                    "name": "ExpressionStatement",
                    "src": "10728:32:34"
                  }
                ],
                "id": 6691,
                "name": "Block",
                "src": "10625:142:34"
              }
            ],
            "id": 6692,
            "name": "FunctionDefinition",
            "src": "10546:221:34"
          },
          {
            "attributes": {
              "functionSelector": "a9cf69fa",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "getProposal",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Returns a proposal.\n@param originDomainID Chain ID deposit originated from.\n@param depositNonce ID of proposal generated by proposal's origin Bridge contract.\n@param dataHash Hash of data to be provided when deposit proposal is executed.\n@return Proposal which consists of:\n- _dataHash Hash of data to be provided when deposit proposal is executed.\n- _yesVotes Number of votes in favor of proposal.\n- _noVotes Number of votes against proposal.\n- _status Current status of proposal."
                },
                "id": 6693,
                "name": "StructuredDocumentation",
                "src": "10773:573:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "originDomainID",
                      "overrides": null,
                      "scope": 6726,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 6694,
                        "name": "ElementaryTypeName",
                        "src": "11372:5:34"
                      }
                    ],
                    "id": 6695,
                    "name": "VariableDeclaration",
                    "src": "11372:20:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "depositNonce",
                      "overrides": null,
                      "scope": 6726,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 6696,
                        "name": "ElementaryTypeName",
                        "src": "11394:6:34"
                      }
                    ],
                    "id": 6697,
                    "name": "VariableDeclaration",
                    "src": "11394:19:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "dataHash",
                      "overrides": null,
                      "scope": 6726,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6698,
                        "name": "ElementaryTypeName",
                        "src": "11415:7:34"
                      }
                    ],
                    "id": 6699,
                    "name": "VariableDeclaration",
                    "src": "11415:16:34"
                  }
                ],
                "id": 6700,
                "name": "ParameterList",
                "src": "11371:61:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 6726,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "struct Bridge.Proposal",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "contractScope": null,
                          "name": "Proposal",
                          "referencedDeclaration": 6167,
                          "type": "struct Bridge.Proposal"
                        },
                        "id": 6701,
                        "name": "UserDefinedTypeName",
                        "src": "11456:8:34"
                      }
                    ],
                    "id": 6702,
                    "name": "VariableDeclaration",
                    "src": "11456:15:34"
                  }
                ],
                "id": 6703,
                "name": "ParameterList",
                "src": "11455:17:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        6705
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "nonceAndID",
                          "overrides": null,
                          "scope": 6725,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint72",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint72",
                              "type": "uint72"
                            },
                            "id": 6704,
                            "name": "ElementaryTypeName",
                            "src": "11483:6:34"
                          }
                        ],
                        "id": 6705,
                        "name": "VariableDeclaration",
                        "src": "11483:17:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "|",
                          "type": "uint72"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint72"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint72",
                                    "typeString": "uint72"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<<",
                                  "type": "uint72"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint72",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint72)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint72",
                                              "type": null
                                            },
                                            "id": 6706,
                                            "name": "ElementaryTypeName",
                                            "src": "11504:6:34"
                                          }
                                        ],
                                        "id": 6707,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "11504:6:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6697,
                                          "type": "uint64",
                                          "value": "depositNonce"
                                        },
                                        "id": 6708,
                                        "name": "Identifier",
                                        "src": "11511:12:34"
                                      }
                                    ],
                                    "id": 6709,
                                    "name": "FunctionCall",
                                    "src": "11504:20:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 6710,
                                    "name": "Literal",
                                    "src": "11528:1:34"
                                  }
                                ],
                                "id": 6711,
                                "name": "BinaryOperation",
                                "src": "11504:25:34"
                              }
                            ],
                            "id": 6712,
                            "name": "TupleExpression",
                            "src": "11503:27:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint72",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint72)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint72",
                                      "type": null
                                    },
                                    "id": 6713,
                                    "name": "ElementaryTypeName",
                                    "src": "11533:6:34"
                                  }
                                ],
                                "id": 6714,
                                "name": "ElementaryTypeNameExpression",
                                "src": "11533:6:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6695,
                                  "type": "uint8",
                                  "value": "originDomainID"
                                },
                                "id": 6715,
                                "name": "Identifier",
                                "src": "11540:14:34"
                              }
                            ],
                            "id": 6716,
                            "name": "FunctionCall",
                            "src": "11533:22:34"
                          }
                        ],
                        "id": 6717,
                        "name": "BinaryOperation",
                        "src": "11503:52:34"
                      }
                    ],
                    "id": 6718,
                    "name": "VariableDeclarationStatement",
                    "src": "11483:72:34"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 6703
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Bridge.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6181,
                                  "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))",
                                  "value": "_proposals"
                                },
                                "id": 6719,
                                "name": "Identifier",
                                "src": "11572:10:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6705,
                                  "type": "uint72",
                                  "value": "nonceAndID"
                                },
                                "id": 6720,
                                "name": "Identifier",
                                "src": "11583:10:34"
                              }
                            ],
                            "id": 6721,
                            "name": "IndexAccess",
                            "src": "11572:22:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6699,
                              "type": "bytes32",
                              "value": "dataHash"
                            },
                            "id": 6722,
                            "name": "Identifier",
                            "src": "11595:8:34"
                          }
                        ],
                        "id": 6723,
                        "name": "IndexAccess",
                        "src": "11572:32:34"
                      }
                    ],
                    "id": 6724,
                    "name": "Return",
                    "src": "11565:39:34"
                  }
                ],
                "id": 6725,
                "name": "Block",
                "src": "11473:138:34"
              }
            ],
            "id": 6726,
            "name": "FunctionDefinition",
            "src": "11351:260:34"
          },
          {
            "attributes": {
              "functionSelector": "802aabe8",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "modifiers": [
                null
              ],
              "name": "_totalRelayers",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "view",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Returns total relayers number.\n@notice Added for backwards compatibility."
                },
                "id": 6727,
                "name": "StructuredDocumentation",
                "src": "11617:109:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6728,
                "name": "ParameterList",
                "src": "11754:2:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "",
                      "overrides": null,
                      "scope": 6738,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint",
                          "type": "uint256"
                        },
                        "id": 6729,
                        "name": "ElementaryTypeName",
                        "src": "11778:4:34"
                      }
                    ],
                    "id": 6730,
                    "name": "VariableDeclaration",
                    "src": "11778:4:34"
                  }
                ],
                "id": 6731,
                "name": "ParameterList",
                "src": "11777:6:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 6731
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "getRoleMemberCount",
                              "referencedDeclaration": 9937,
                              "type": "function (bytes32) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 10149,
                                  "type": "type(contract AccessControl)",
                                  "value": "AccessControl"
                                },
                                "id": 6732,
                                "name": "Identifier",
                                "src": "11801:13:34"
                              }
                            ],
                            "id": 6733,
                            "name": "MemberAccess",
                            "src": "11801:32:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6236,
                              "type": "bytes32",
                              "value": "RELAYER_ROLE"
                            },
                            "id": 6734,
                            "name": "Identifier",
                            "src": "11834:12:34"
                          }
                        ],
                        "id": 6735,
                        "name": "FunctionCall",
                        "src": "11801:46:34"
                      }
                    ],
                    "id": 6736,
                    "name": "Return",
                    "src": "11794:53:34"
                  }
                ],
                "id": 6737,
                "name": "Block",
                "src": "11784:70:34"
              }
            ],
            "id": 6738,
            "name": "FunctionDefinition",
            "src": "11731:123:34"
          },
          {
            "attributes": {
              "functionSelector": "91c404ac",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "adminChangeFee",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Changes deposit fee.\n@notice Only callable by admin.\n@param newFee Value {_fee} will be updated to."
                },
                "id": 6739,
                "name": "StructuredDocumentation",
                "src": "11860:143:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "newFee",
                      "overrides": null,
                      "scope": 6760,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 6740,
                        "name": "ElementaryTypeName",
                        "src": "12032:7:34"
                      }
                    ],
                    "id": 6741,
                    "name": "VariableDeclaration",
                    "src": "12032:14:34"
                  }
                ],
                "id": 6742,
                "name": "ParameterList",
                "src": "12031:16:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6745,
                "name": "ParameterList",
                "src": "12067:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6243,
                      "type": "modifier ()",
                      "value": "onlyAdmin"
                    },
                    "id": 6743,
                    "name": "Identifier",
                    "src": "12057:9:34"
                  }
                ],
                "id": 6744,
                "name": "ModifierInvocation",
                "src": "12057:9:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_db095f13e245243418ee9a5b7ae0408e2f6a2092be336cf2ec7b5f2ae85b9133",
                                  "typeString": "literal_string \"Current fee is equal to new fee\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6746,
                            "name": "Identifier",
                            "src": "12077:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6150,
                                  "type": "uint128",
                                  "value": "_fee"
                                },
                                "id": 6747,
                                "name": "Identifier",
                                "src": "12085:4:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6741,
                                  "type": "uint256",
                                  "value": "newFee"
                                },
                                "id": 6748,
                                "name": "Identifier",
                                "src": "12093:6:34"
                              }
                            ],
                            "id": 6749,
                            "name": "BinaryOperation",
                            "src": "12085:14:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "43757272656e742066656520697320657175616c20746f206e657720666565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Current fee is equal to new fee\"",
                              "value": "Current fee is equal to new fee"
                            },
                            "id": 6750,
                            "name": "Literal",
                            "src": "12101:33:34"
                          }
                        ],
                        "id": 6751,
                        "name": "FunctionCall",
                        "src": "12077:58:34"
                      }
                    ],
                    "id": 6752,
                    "name": "ExpressionStatement",
                    "src": "12077:58:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "uint128"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6150,
                              "type": "uint128",
                              "value": "_fee"
                            },
                            "id": 6753,
                            "name": "Identifier",
                            "src": "12145:4:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint128",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "toUint128",
                                  "referencedDeclaration": 10296,
                                  "type": "function (uint256) pure returns (uint128)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6741,
                                      "type": "uint256",
                                      "value": "newFee"
                                    },
                                    "id": 6754,
                                    "name": "Identifier",
                                    "src": "12152:6:34"
                                  }
                                ],
                                "id": 6755,
                                "name": "MemberAccess",
                                "src": "12152:16:34"
                              }
                            ],
                            "id": 6756,
                            "name": "FunctionCall",
                            "src": "12152:18:34"
                          }
                        ],
                        "id": 6757,
                        "name": "Assignment",
                        "src": "12145:25:34"
                      }
                    ],
                    "id": 6758,
                    "name": "ExpressionStatement",
                    "src": "12145:25:34"
                  }
                ],
                "id": 6759,
                "name": "Block",
                "src": "12067:110:34"
              }
            ],
            "id": 6760,
            "name": "FunctionDefinition",
            "src": "12008:169:34"
          },
          {
            "attributes": {
              "functionSelector": "bd2a1820",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "adminWithdraw",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Used to manually withdraw funds from ERC safes.\n@param handlerAddress Address of handler to withdraw from.\n@param data ABI-encoded withdrawal params relevant to the specified handler."
                },
                "id": 6761,
                "name": "StructuredDocumentation",
                "src": "12183:227:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "handlerAddress",
                      "overrides": null,
                      "scope": 6783,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "stateMutability": "nonpayable",
                          "type": "address"
                        },
                        "id": 6762,
                        "name": "ElementaryTypeName",
                        "src": "12447:7:34"
                      }
                    ],
                    "id": 6763,
                    "name": "VariableDeclaration",
                    "src": "12447:22:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "overrides": null,
                      "scope": 6783,
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 6764,
                        "name": "ElementaryTypeName",
                        "src": "12479:5:34"
                      }
                    ],
                    "id": 6765,
                    "name": "VariableDeclaration",
                    "src": "12479:17:34"
                  }
                ],
                "id": 6766,
                "name": "ParameterList",
                "src": "12437:65:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6769,
                "name": "ParameterList",
                "src": "12522:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6243,
                      "type": "modifier ()",
                      "value": "onlyAdmin"
                    },
                    "id": 6767,
                    "name": "Identifier",
                    "src": "12512:9:34"
                  }
                ],
                "id": 6768,
                "name": "ModifierInvocation",
                "src": "12512:9:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        6771
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "handler",
                          "overrides": null,
                          "scope": 6782,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract IERCHandler",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "IERCHandler",
                              "referencedDeclaration": 9840,
                              "type": "contract IERCHandler"
                            },
                            "id": 6770,
                            "name": "UserDefinedTypeName",
                            "src": "12532:11:34"
                          }
                        ],
                        "id": 6771,
                        "name": "VariableDeclaration",
                        "src": "12532:19:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "contract IERCHandler",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9840,
                              "type": "type(contract IERCHandler)",
                              "value": "IERCHandler"
                            },
                            "id": 6772,
                            "name": "Identifier",
                            "src": "12554:11:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6763,
                              "type": "address",
                              "value": "handlerAddress"
                            },
                            "id": 6773,
                            "name": "Identifier",
                            "src": "12566:14:34"
                          }
                        ],
                        "id": 6774,
                        "name": "FunctionCall",
                        "src": "12554:27:34"
                      }
                    ],
                    "id": 6775,
                    "name": "VariableDeclarationStatement",
                    "src": "12532:49:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "withdraw",
                              "referencedDeclaration": 9839,
                              "type": "function (bytes memory) external"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6771,
                                  "type": "contract IERCHandler",
                                  "value": "handler"
                                },
                                "id": 6776,
                                "name": "Identifier",
                                "src": "12591:7:34"
                              }
                            ],
                            "id": 6778,
                            "name": "MemberAccess",
                            "src": "12591:16:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6765,
                              "type": "bytes memory",
                              "value": "data"
                            },
                            "id": 6779,
                            "name": "Identifier",
                            "src": "12608:4:34"
                          }
                        ],
                        "id": 6780,
                        "name": "FunctionCall",
                        "src": "12591:22:34"
                      }
                    ],
                    "id": 6781,
                    "name": "ExpressionStatement",
                    "src": "12591:22:34"
                  }
                ],
                "id": 6782,
                "name": "Block",
                "src": "12522:98:34"
              }
            ],
            "id": 6783,
            "name": "FunctionDefinition",
            "src": "12415:205:34"
          },
          {
            "attributes": {
              "functionSelector": "05e2ca17",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "deposit",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "payable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Initiates a transfer using a specified handler contract.\n@notice Only callable when Bridge is not paused.\n@param destinationDomainID ID of chain deposit will be bridged to.\n@param resourceID ResourceID used to find address of handler to be used for deposit.\n@param data Additional data to be passed to specified handler.\n@notice Emits {Deposit} event with all necessary parameters and a handler response.\n- ERC20Handler: responds with an empty data.\n- ERC721Handler: responds with the deposited token metadata acquired by calling a tokenURI method in the token contract.\n- GenericHandler: responds with the raw bytes returned from the call to the target contract."
                },
                "id": 6784,
                "name": "StructuredDocumentation",
                "src": "12626:755:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "destinationDomainID",
                      "overrides": null,
                      "scope": 6853,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 6785,
                        "name": "ElementaryTypeName",
                        "src": "13403:5:34"
                      }
                    ],
                    "id": 6786,
                    "name": "VariableDeclaration",
                    "src": "13403:25:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "resourceID",
                      "overrides": null,
                      "scope": 6853,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6787,
                        "name": "ElementaryTypeName",
                        "src": "13430:7:34"
                      }
                    ],
                    "id": 6788,
                    "name": "VariableDeclaration",
                    "src": "13430:18:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "overrides": null,
                      "scope": 6853,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 6789,
                        "name": "ElementaryTypeName",
                        "src": "13450:5:34"
                      }
                    ],
                    "id": 6790,
                    "name": "VariableDeclaration",
                    "src": "13450:19:34"
                  }
                ],
                "id": 6791,
                "name": "ParameterList",
                "src": "13402:68:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6794,
                "name": "ParameterList",
                "src": "13502:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 10190,
                      "type": "modifier ()",
                      "value": "whenNotPaused"
                    },
                    "id": 6792,
                    "name": "Identifier",
                    "src": "13488:13:34"
                  }
                ],
                "id": 6793,
                "name": "ModifierInvocation",
                "src": "13488:13:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_2a2431514317abe5c8b163ccf132d16516b7e676afbb7d1bf5781dba4082d9d5",
                                  "typeString": "literal_string \"Incorrect fee supplied\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6795,
                            "name": "Identifier",
                            "src": "13512:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "value",
                                  "referencedDeclaration": null,
                                  "type": "uint256"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": -15,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 6796,
                                    "name": "Identifier",
                                    "src": "13520:3:34"
                                  }
                                ],
                                "id": 6797,
                                "name": "MemberAccess",
                                "src": "13520:9:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6150,
                                  "type": "uint128",
                                  "value": "_fee"
                                },
                                "id": 6798,
                                "name": "Identifier",
                                "src": "13533:4:34"
                              }
                            ],
                            "id": 6799,
                            "name": "BinaryOperation",
                            "src": "13520:17:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "496e636f72726563742066656520737570706c696564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Incorrect fee supplied\"",
                              "value": "Incorrect fee supplied"
                            },
                            "id": 6800,
                            "name": "Literal",
                            "src": "13539:24:34"
                          }
                        ],
                        "id": 6801,
                        "name": "FunctionCall",
                        "src": "13512:52:34"
                      }
                    ],
                    "id": 6802,
                    "name": "ExpressionStatement",
                    "src": "13512:52:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6804
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "handler",
                          "overrides": null,
                          "scope": 6852,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 6803,
                            "name": "ElementaryTypeName",
                            "src": "13575:7:34"
                          }
                        ],
                        "id": 6804,
                        "name": "VariableDeclaration",
                        "src": "13575:15:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6175,
                              "type": "mapping(bytes32 => address)",
                              "value": "_resourceIDToHandlerAddress"
                            },
                            "id": 6805,
                            "name": "Identifier",
                            "src": "13593:27:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6788,
                              "type": "bytes32",
                              "value": "resourceID"
                            },
                            "id": 6806,
                            "name": "Identifier",
                            "src": "13621:10:34"
                          }
                        ],
                        "id": 6807,
                        "name": "IndexAccess",
                        "src": "13593:39:34"
                      }
                    ],
                    "id": 6808,
                    "name": "VariableDeclarationStatement",
                    "src": "13575:57:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_542d0c0b50539d1853c947fb8449b05e8626e9928b1fbf8fb55da8a4976aae52",
                                  "typeString": "literal_string \"resourceID not mapped to handler\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6809,
                            "name": "Identifier",
                            "src": "13642:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6804,
                                  "type": "address",
                                  "value": "handler"
                                },
                                "id": 6810,
                                "name": "Identifier",
                                "src": "13650:7:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "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)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address",
                                          "type": null
                                        },
                                        "id": 6811,
                                        "name": "ElementaryTypeName",
                                        "src": "13661:7:34"
                                      }
                                    ],
                                    "id": 6812,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "13661:7:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 6813,
                                    "name": "Literal",
                                    "src": "13669:1:34"
                                  }
                                ],
                                "id": 6814,
                                "name": "FunctionCall",
                                "src": "13661:10:34"
                              }
                            ],
                            "id": 6815,
                            "name": "BinaryOperation",
                            "src": "13650:21:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "7265736f757263654944206e6f74206d617070656420746f2068616e646c6572",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"resourceID not mapped to handler\"",
                              "value": "resourceID not mapped to handler"
                            },
                            "id": 6816,
                            "name": "Literal",
                            "src": "13673:34:34"
                          }
                        ],
                        "id": 6817,
                        "name": "FunctionCall",
                        "src": "13642:66:34"
                      }
                    ],
                    "id": 6818,
                    "name": "ExpressionStatement",
                    "src": "13642:66:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6820
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "depositNonce",
                          "overrides": null,
                          "scope": 6852,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint64",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint64",
                              "type": "uint64"
                            },
                            "id": 6819,
                            "name": "ElementaryTypeName",
                            "src": "13719:6:34"
                          }
                        ],
                        "id": 6820,
                        "name": "VariableDeclaration",
                        "src": "13719:19:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "++",
                          "prefix": true,
                          "type": "uint64"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "uint64"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6171,
                                  "type": "mapping(uint8 => uint64)",
                                  "value": "_depositCounts"
                                },
                                "id": 6821,
                                "name": "Identifier",
                                "src": "13743:14:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6786,
                                  "type": "uint8",
                                  "value": "destinationDomainID"
                                },
                                "id": 6822,
                                "name": "Identifier",
                                "src": "13758:19:34"
                              }
                            ],
                            "id": 6823,
                            "name": "IndexAccess",
                            "src": "13743:35:34"
                          }
                        ],
                        "id": 6824,
                        "name": "UnaryOperation",
                        "src": "13741:37:34"
                      }
                    ],
                    "id": 6825,
                    "name": "VariableDeclarationStatement",
                    "src": "13719:59:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6827
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "depositHandler",
                          "overrides": null,
                          "scope": 6852,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract IDepositExecute",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "IDepositExecute",
                              "referencedDeclaration": 9816,
                              "type": "contract IDepositExecute"
                            },
                            "id": 6826,
                            "name": "UserDefinedTypeName",
                            "src": "13789:15:34"
                          }
                        ],
                        "id": 6827,
                        "name": "VariableDeclaration",
                        "src": "13789:30:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "contract IDepositExecute",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9816,
                              "type": "type(contract IDepositExecute)",
                              "value": "IDepositExecute"
                            },
                            "id": 6828,
                            "name": "Identifier",
                            "src": "13822:15:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6804,
                              "type": "address",
                              "value": "handler"
                            },
                            "id": 6829,
                            "name": "Identifier",
                            "src": "13838:7:34"
                          }
                        ],
                        "id": 6830,
                        "name": "FunctionCall",
                        "src": "13822:24:34"
                      }
                    ],
                    "id": 6831,
                    "name": "VariableDeclarationStatement",
                    "src": "13789:57:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6833
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "handlerResponse",
                          "overrides": null,
                          "scope": 6852,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "bytes",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes",
                              "type": "bytes"
                            },
                            "id": 6832,
                            "name": "ElementaryTypeName",
                            "src": "13856:5:34"
                          }
                        ],
                        "id": 6833,
                        "name": "VariableDeclaration",
                        "src": "13856:28:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bytes memory",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "deposit",
                              "referencedDeclaration": 9807,
                              "type": "function (bytes32,address,bytes memory) external returns (bytes memory)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6827,
                                  "type": "contract IDepositExecute",
                                  "value": "depositHandler"
                                },
                                "id": 6834,
                                "name": "Identifier",
                                "src": "13887:14:34"
                              }
                            ],
                            "id": 6835,
                            "name": "MemberAccess",
                            "src": "13887:22:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6788,
                              "type": "bytes32",
                              "value": "resourceID"
                            },
                            "id": 6836,
                            "name": "Identifier",
                            "src": "13910:10:34"
                          },
                          {
                            "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": -15,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 6837,
                                "name": "Identifier",
                                "src": "13922:3:34"
                              }
                            ],
                            "id": 6838,
                            "name": "MemberAccess",
                            "src": "13922:10:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6790,
                              "type": "bytes calldata",
                              "value": "data"
                            },
                            "id": 6839,
                            "name": "Identifier",
                            "src": "13934:4:34"
                          }
                        ],
                        "id": 6840,
                        "name": "FunctionCall",
                        "src": "13887:52:34"
                      }
                    ],
                    "id": 6841,
                    "name": "VariableDeclarationStatement",
                    "src": "13856:83:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                },
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6207,
                              "type": "function (uint8,bytes32,uint64,address,bytes memory,bytes memory)",
                              "value": "Deposit"
                            },
                            "id": 6842,
                            "name": "Identifier",
                            "src": "13955:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6786,
                              "type": "uint8",
                              "value": "destinationDomainID"
                            },
                            "id": 6843,
                            "name": "Identifier",
                            "src": "13963:19:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6788,
                              "type": "bytes32",
                              "value": "resourceID"
                            },
                            "id": 6844,
                            "name": "Identifier",
                            "src": "13984:10:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6820,
                              "type": "uint64",
                              "value": "depositNonce"
                            },
                            "id": 6845,
                            "name": "Identifier",
                            "src": "13996:12:34"
                          },
                          {
                            "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": -15,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 6846,
                                "name": "Identifier",
                                "src": "14010:3:34"
                              }
                            ],
                            "id": 6847,
                            "name": "MemberAccess",
                            "src": "14010:10:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6790,
                              "type": "bytes calldata",
                              "value": "data"
                            },
                            "id": 6848,
                            "name": "Identifier",
                            "src": "14022:4:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6833,
                              "type": "bytes memory",
                              "value": "handlerResponse"
                            },
                            "id": 6849,
                            "name": "Identifier",
                            "src": "14028:15:34"
                          }
                        ],
                        "id": 6850,
                        "name": "FunctionCall",
                        "src": "13955:89:34"
                      }
                    ],
                    "id": 6851,
                    "name": "EmitStatement",
                    "src": "13950:94:34"
                  }
                ],
                "id": 6852,
                "name": "Block",
                "src": "13502:549:34"
              }
            ],
            "id": 6853,
            "name": "FunctionDefinition",
            "src": "13386:665:34"
          },
          {
            "attributes": {
              "functionSelector": "c0331b3e",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "voteProposal",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice When called, {msg.sender} will be marked as voting in favor of proposal.\n@notice Only callable by relayers when Bridge is not paused.\n@param domainID ID of chain deposit originated from.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param data Data originally provided when deposit was made.\n@notice Proposal must not have already been passed or executed.\n@notice {msg.sender} must not have already voted on proposal.\n@notice Emits {ProposalEvent} event with status indicating the proposal status.\n@notice Emits {ProposalVote} event."
                },
                "id": 6854,
                "name": "StructuredDocumentation",
                "src": "14057:653:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "domainID",
                      "overrides": null,
                      "scope": 7094,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 6855,
                        "name": "ElementaryTypeName",
                        "src": "14737:5:34"
                      }
                    ],
                    "id": 6856,
                    "name": "VariableDeclaration",
                    "src": "14737:14:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "depositNonce",
                      "overrides": null,
                      "scope": 7094,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 6857,
                        "name": "ElementaryTypeName",
                        "src": "14753:6:34"
                      }
                    ],
                    "id": 6858,
                    "name": "VariableDeclaration",
                    "src": "14753:19:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "resourceID",
                      "overrides": null,
                      "scope": 7094,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 6859,
                        "name": "ElementaryTypeName",
                        "src": "14774:7:34"
                      }
                    ],
                    "id": 6860,
                    "name": "VariableDeclaration",
                    "src": "14774:18:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "overrides": null,
                      "scope": 7094,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 6861,
                        "name": "ElementaryTypeName",
                        "src": "14794:5:34"
                      }
                    ],
                    "id": 6862,
                    "name": "VariableDeclaration",
                    "src": "14794:19:34"
                  }
                ],
                "id": 6863,
                "name": "ParameterList",
                "src": "14736:78:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 6868,
                "name": "ParameterList",
                "src": "14851:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6257,
                      "type": "modifier ()",
                      "value": "onlyRelayers"
                    },
                    "id": 6864,
                    "name": "Identifier",
                    "src": "14824:12:34"
                  }
                ],
                "id": 6865,
                "name": "ModifierInvocation",
                "src": "14824:12:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 10190,
                      "type": "modifier ()",
                      "value": "whenNotPaused"
                    },
                    "id": 6866,
                    "name": "Identifier",
                    "src": "14837:13:34"
                  }
                ],
                "id": 6867,
                "name": "ModifierInvocation",
                "src": "14837:13:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        6870
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "handler",
                          "overrides": null,
                          "scope": 7093,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 6869,
                            "name": "ElementaryTypeName",
                            "src": "14861:7:34"
                          }
                        ],
                        "id": 6870,
                        "name": "VariableDeclaration",
                        "src": "14861:15:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6175,
                              "type": "mapping(bytes32 => address)",
                              "value": "_resourceIDToHandlerAddress"
                            },
                            "id": 6871,
                            "name": "Identifier",
                            "src": "14879:27:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6860,
                              "type": "bytes32",
                              "value": "resourceID"
                            },
                            "id": 6872,
                            "name": "Identifier",
                            "src": "14907:10:34"
                          }
                        ],
                        "id": 6873,
                        "name": "IndexAccess",
                        "src": "14879:39:34"
                      }
                    ],
                    "id": 6874,
                    "name": "VariableDeclarationStatement",
                    "src": "14861:57:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6876
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "nonceAndID",
                          "overrides": null,
                          "scope": 7093,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint72",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint72",
                              "type": "uint72"
                            },
                            "id": 6875,
                            "name": "ElementaryTypeName",
                            "src": "14928:6:34"
                          }
                        ],
                        "id": 6876,
                        "name": "VariableDeclaration",
                        "src": "14928:17:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "|",
                          "type": "uint72"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint72"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint72",
                                    "typeString": "uint72"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<<",
                                  "type": "uint72"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint72",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint72)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint72",
                                              "type": null
                                            },
                                            "id": 6877,
                                            "name": "ElementaryTypeName",
                                            "src": "14949:6:34"
                                          }
                                        ],
                                        "id": 6878,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "14949:6:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6858,
                                          "type": "uint64",
                                          "value": "depositNonce"
                                        },
                                        "id": 6879,
                                        "name": "Identifier",
                                        "src": "14956:12:34"
                                      }
                                    ],
                                    "id": 6880,
                                    "name": "FunctionCall",
                                    "src": "14949:20:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 6881,
                                    "name": "Literal",
                                    "src": "14973:1:34"
                                  }
                                ],
                                "id": 6882,
                                "name": "BinaryOperation",
                                "src": "14949:25:34"
                              }
                            ],
                            "id": 6883,
                            "name": "TupleExpression",
                            "src": "14948:27:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint72",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint72)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint72",
                                      "type": null
                                    },
                                    "id": 6884,
                                    "name": "ElementaryTypeName",
                                    "src": "14978:6:34"
                                  }
                                ],
                                "id": 6885,
                                "name": "ElementaryTypeNameExpression",
                                "src": "14978:6:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6856,
                                  "type": "uint8",
                                  "value": "domainID"
                                },
                                "id": 6886,
                                "name": "Identifier",
                                "src": "14985:8:34"
                              }
                            ],
                            "id": 6887,
                            "name": "FunctionCall",
                            "src": "14978:16:34"
                          }
                        ],
                        "id": 6888,
                        "name": "BinaryOperation",
                        "src": "14948:46:34"
                      }
                    ],
                    "id": 6889,
                    "name": "VariableDeclarationStatement",
                    "src": "14928:66:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6891
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "dataHash",
                          "overrides": null,
                          "scope": 7093,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 6890,
                            "name": "ElementaryTypeName",
                            "src": "15004:7:34"
                          }
                        ],
                        "id": 6891,
                        "name": "VariableDeclaration",
                        "src": "15004:16:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": -8,
                              "type": "function (bytes memory) pure returns (bytes32)",
                              "value": "keccak256"
                            },
                            "id": 6892,
                            "name": "Identifier",
                            "src": "15023:9:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "encodePacked",
                                  "referencedDeclaration": null,
                                  "type": "function () pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": -1,
                                      "type": "abi",
                                      "value": "abi"
                                    },
                                    "id": 6893,
                                    "name": "Identifier",
                                    "src": "15033:3:34"
                                  }
                                ],
                                "id": 6894,
                                "name": "MemberAccess",
                                "src": "15033:16:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6870,
                                  "type": "address",
                                  "value": "handler"
                                },
                                "id": 6895,
                                "name": "Identifier",
                                "src": "15050:7:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6862,
                                  "type": "bytes calldata",
                                  "value": "data"
                                },
                                "id": 6896,
                                "name": "Identifier",
                                "src": "15059:4:34"
                              }
                            ],
                            "id": 6897,
                            "name": "FunctionCall",
                            "src": "15033:31:34"
                          }
                        ],
                        "id": 6898,
                        "name": "FunctionCall",
                        "src": "15023:42:34"
                      }
                    ],
                    "id": 6899,
                    "name": "VariableDeclarationStatement",
                    "src": "15004:61:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        6901
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "proposal",
                          "overrides": null,
                          "scope": 7093,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct Bridge.Proposal",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Proposal",
                              "referencedDeclaration": 6167,
                              "type": "struct Bridge.Proposal"
                            },
                            "id": 6900,
                            "name": "UserDefinedTypeName",
                            "src": "15075:8:34"
                          }
                        ],
                        "id": 6901,
                        "name": "VariableDeclaration",
                        "src": "15075:24:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Bridge.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6181,
                                  "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))",
                                  "value": "_proposals"
                                },
                                "id": 6902,
                                "name": "Identifier",
                                "src": "15102:10:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6876,
                                  "type": "uint72",
                                  "value": "nonceAndID"
                                },
                                "id": 6903,
                                "name": "Identifier",
                                "src": "15113:10:34"
                              }
                            ],
                            "id": 6904,
                            "name": "IndexAccess",
                            "src": "15102:22:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6891,
                              "type": "bytes32",
                              "value": "dataHash"
                            },
                            "id": 6905,
                            "name": "Identifier",
                            "src": "15125:8:34"
                          }
                        ],
                        "id": 6906,
                        "name": "IndexAccess",
                        "src": "15102:32:34"
                      }
                    ],
                    "id": 6907,
                    "name": "VariableDeclarationStatement",
                    "src": "15075:59:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_e9d3c8def96ec5b61b3d5e8e38d358587f69ed955aa1f36ba2f95c28a40ffe20",
                                  "typeString": "literal_string \"no handler for resourceID\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6908,
                            "name": "Identifier",
                            "src": "15145:7:34"
                          },
                          {
                            "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": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6175,
                                      "type": "mapping(bytes32 => address)",
                                      "value": "_resourceIDToHandlerAddress"
                                    },
                                    "id": 6909,
                                    "name": "Identifier",
                                    "src": "15153:27:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6860,
                                      "type": "bytes32",
                                      "value": "resourceID"
                                    },
                                    "id": 6910,
                                    "name": "Identifier",
                                    "src": "15181:10:34"
                                  }
                                ],
                                "id": 6911,
                                "name": "IndexAccess",
                                "src": "15153:39:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "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)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "address",
                                          "type": null
                                        },
                                        "id": 6912,
                                        "name": "ElementaryTypeName",
                                        "src": "15196:7:34"
                                      }
                                    ],
                                    "id": 6913,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "15196:7:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 6914,
                                    "name": "Literal",
                                    "src": "15204:1:34"
                                  }
                                ],
                                "id": 6915,
                                "name": "FunctionCall",
                                "src": "15196:10:34"
                              }
                            ],
                            "id": 6916,
                            "name": "BinaryOperation",
                            "src": "15153:53:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "6e6f2068616e646c657220666f72207265736f757263654944",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"no handler for resourceID\"",
                              "value": "no handler for resourceID"
                            },
                            "id": 6917,
                            "name": "Literal",
                            "src": "15208:27:34"
                          }
                        ],
                        "id": 6918,
                        "name": "FunctionCall",
                        "src": "15145:91:34"
                      }
                    ],
                    "id": 6919,
                    "name": "ExpressionStatement",
                    "src": "15145:91:34"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                            "typeString": "enum Bridge.ProposalStatus"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_status",
                              "referencedDeclaration": 6160,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6901,
                                  "type": "struct Bridge.Proposal memory",
                                  "value": "proposal"
                                },
                                "id": 6920,
                                "name": "Identifier",
                                "src": "15251:8:34"
                              }
                            ],
                            "id": 6921,
                            "name": "MemberAccess",
                            "src": "15251:16:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Passed",
                              "referencedDeclaration": null,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6158,
                                  "type": "type(enum Bridge.ProposalStatus)",
                                  "value": "ProposalStatus"
                                },
                                "id": 6922,
                                "name": "Identifier",
                                "src": "15271:14:34"
                              }
                            ],
                            "id": 6923,
                            "name": "MemberAccess",
                            "src": "15271:21:34"
                          }
                        ],
                        "id": 6924,
                        "name": "BinaryOperation",
                        "src": "15251:41:34"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7310,
                                      "type": "function (uint8,uint64,bytes calldata,bytes32,bool)",
                                      "value": "executeProposal"
                                    },
                                    "id": 6925,
                                    "name": "Identifier",
                                    "src": "15308:15:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6856,
                                      "type": "uint8",
                                      "value": "domainID"
                                    },
                                    "id": 6926,
                                    "name": "Identifier",
                                    "src": "15324:8:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6858,
                                      "type": "uint64",
                                      "value": "depositNonce"
                                    },
                                    "id": 6927,
                                    "name": "Identifier",
                                    "src": "15334:12:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6862,
                                      "type": "bytes calldata",
                                      "value": "data"
                                    },
                                    "id": 6928,
                                    "name": "Identifier",
                                    "src": "15348:4:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6860,
                                      "type": "bytes32",
                                      "value": "resourceID"
                                    },
                                    "id": 6929,
                                    "name": "Identifier",
                                    "src": "15354:10:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "74727565",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "bool",
                                      "type": "bool",
                                      "value": "true"
                                    },
                                    "id": 6930,
                                    "name": "Literal",
                                    "src": "15366:4:34"
                                  }
                                ],
                                "id": 6931,
                                "name": "FunctionCall",
                                "src": "15308:63:34"
                              }
                            ],
                            "id": 6932,
                            "name": "ExpressionStatement",
                            "src": "15308:63:34"
                          },
                          {
                            "attributes": {
                              "expression": null,
                              "functionReturnParameters": 6868
                            },
                            "id": 6933,
                            "name": "Return",
                            "src": "15385:7:34"
                          }
                        ],
                        "id": 6934,
                        "name": "Block",
                        "src": "15294:108:34"
                      }
                    ],
                    "id": 6935,
                    "name": "IfStatement",
                    "src": "15247:155:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_f0409114a41e8e671d7a0df50b4827806b4a45af8b2011927a9479dfc06d4aa5",
                                  "typeString": "literal_string \"proposal already executed/cancelled\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6936,
                            "name": "Identifier",
                            "src": "15420:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "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
                                  ],
                                  "tryCall": false,
                                  "type": "uint256",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                          "typeString": "enum Bridge.ProposalStatus"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint",
                                          "type": null
                                        },
                                        "id": 6937,
                                        "name": "ElementaryTypeName",
                                        "src": "15428:4:34"
                                      }
                                    ],
                                    "id": 6938,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "15428:4:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "_status",
                                      "referencedDeclaration": 6160,
                                      "type": "enum Bridge.ProposalStatus"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6901,
                                          "type": "struct Bridge.Proposal memory",
                                          "value": "proposal"
                                        },
                                        "id": 6939,
                                        "name": "Identifier",
                                        "src": "15433:8:34"
                                      }
                                    ],
                                    "id": 6940,
                                    "name": "MemberAccess",
                                    "src": "15433:16:34"
                                  }
                                ],
                                "id": 6941,
                                "name": "FunctionCall",
                                "src": "15428:22:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "31",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "number",
                                  "type": "int_const 1",
                                  "value": "1"
                                },
                                "id": 6942,
                                "name": "Literal",
                                "src": "15454:1:34"
                              }
                            ],
                            "id": 6943,
                            "name": "BinaryOperation",
                            "src": "15428:27:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "70726f706f73616c20616c72656164792065786563757465642f63616e63656c6c6564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"proposal already executed/cancelled\"",
                              "value": "proposal already executed/cancelled"
                            },
                            "id": 6944,
                            "name": "Literal",
                            "src": "15457:37:34"
                          }
                        ],
                        "id": 6945,
                        "name": "FunctionCall",
                        "src": "15420:75:34"
                      }
                    ],
                    "id": 6946,
                    "name": "ExpressionStatement",
                    "src": "15420:75:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_0bc9c5100729666c219a147072032fe3fda273fedfa160b31a35f38bd9d0632b",
                                  "typeString": "literal_string \"relayer already voted\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 6947,
                            "name": "Identifier",
                            "src": "15505:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!",
                              "prefix": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "bool",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_struct$_Proposal_$6167_memory_ptr",
                                          "typeString": "struct Bridge.Proposal memory"
                                        },
                                        {
                                          "typeIdentifier": "t_address_payable",
                                          "typeString": "address payable"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6347,
                                      "type": "function (struct Bridge.Proposal memory,address) view returns (bool)",
                                      "value": "_hasVoted"
                                    },
                                    "id": 6948,
                                    "name": "Identifier",
                                    "src": "15514:9:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6901,
                                      "type": "struct Bridge.Proposal memory",
                                      "value": "proposal"
                                    },
                                    "id": 6949,
                                    "name": "Identifier",
                                    "src": "15524:8:34"
                                  },
                                  {
                                    "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": -15,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 6950,
                                        "name": "Identifier",
                                        "src": "15534:3:34"
                                      }
                                    ],
                                    "id": 6951,
                                    "name": "MemberAccess",
                                    "src": "15534:10:34"
                                  }
                                ],
                                "id": 6952,
                                "name": "FunctionCall",
                                "src": "15514:31:34"
                              }
                            ],
                            "id": 6953,
                            "name": "UnaryOperation",
                            "src": "15513:32:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "72656c6179657220616c726561647920766f746564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"relayer already voted\"",
                              "value": "relayer already voted"
                            },
                            "id": 6954,
                            "name": "Literal",
                            "src": "15547:23:34"
                          }
                        ],
                        "id": 6955,
                        "name": "FunctionCall",
                        "src": "15505:66:34"
                      }
                    ],
                    "id": 6956,
                    "name": "ExpressionStatement",
                    "src": "15505:66:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                            "typeString": "enum Bridge.ProposalStatus"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_status",
                              "referencedDeclaration": 6160,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6901,
                                  "type": "struct Bridge.Proposal memory",
                                  "value": "proposal"
                                },
                                "id": 6957,
                                "name": "Identifier",
                                "src": "15586:8:34"
                              }
                            ],
                            "id": 6958,
                            "name": "MemberAccess",
                            "src": "15586:16:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Inactive",
                              "referencedDeclaration": null,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6158,
                                  "type": "type(enum Bridge.ProposalStatus)",
                                  "value": "ProposalStatus"
                                },
                                "id": 6959,
                                "name": "Identifier",
                                "src": "15606:14:34"
                              }
                            ],
                            "id": 6960,
                            "name": "MemberAccess",
                            "src": "15606:23:34"
                          }
                        ],
                        "id": 6961,
                        "name": "BinaryOperation",
                        "src": "15586:43:34"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "struct Bridge.Proposal memory"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6901,
                                      "type": "struct Bridge.Proposal memory",
                                      "value": "proposal"
                                    },
                                    "id": 6962,
                                    "name": "Identifier",
                                    "src": "15645:8:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": true,
                                      "lValueRequested": false,
                                      "names": [
                                        "_status",
                                        "_yesVotes",
                                        "_yesVotesTotal",
                                        "_proposedBlock"
                                      ],
                                      "tryCall": false,
                                      "type": "struct Bridge.Proposal memory",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                              "typeString": "enum Bridge.ProposalStatus"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            {
                                              "typeIdentifier": "t_rational_0_by_1",
                                              "typeString": "int_const 0"
                                            },
                                            {
                                              "typeIdentifier": "t_uint40",
                                              "typeString": "uint40"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6167,
                                          "type": "type(struct Bridge.Proposal storage pointer)",
                                          "value": "Proposal"
                                        },
                                        "id": 6963,
                                        "name": "Identifier",
                                        "src": "15656:8:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "Active",
                                          "referencedDeclaration": null,
                                          "type": "enum Bridge.ProposalStatus"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6158,
                                              "type": "type(enum Bridge.ProposalStatus)",
                                              "value": "ProposalStatus"
                                            },
                                            "id": 6964,
                                            "name": "Identifier",
                                            "src": "15693:14:34"
                                          }
                                        ],
                                        "id": 6965,
                                        "name": "MemberAccess",
                                        "src": "15693:21:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 6966,
                                        "name": "Literal",
                                        "src": "15744:1:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "30",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "number",
                                          "type": "int_const 0",
                                          "value": "0"
                                        },
                                        "id": 6967,
                                        "name": "Literal",
                                        "src": "15780:1:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "uint40",
                                          "type_conversion": true
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              ],
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "type": "type(uint40)"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "name": "uint40",
                                                  "type": null
                                                },
                                                "id": 6968,
                                                "name": "ElementaryTypeName",
                                                "src": "15816:6:34"
                                              }
                                            ],
                                            "id": 6969,
                                            "name": "ElementaryTypeNameExpression",
                                            "src": "15816:6:34"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "member_name": "number",
                                              "referencedDeclaration": null,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": -4,
                                                  "type": "block",
                                                  "value": "block"
                                                },
                                                "id": 6970,
                                                "name": "Identifier",
                                                "src": "15823:5:34"
                                              }
                                            ],
                                            "id": 6971,
                                            "name": "MemberAccess",
                                            "src": "15823:12:34"
                                          }
                                        ],
                                        "id": 6972,
                                        "name": "FunctionCall",
                                        "src": "15816:20:34"
                                      }
                                    ],
                                    "id": 6973,
                                    "name": "FunctionCall",
                                    "src": "15656:219:34"
                                  }
                                ],
                                "id": 6974,
                                "name": "Assignment",
                                "src": "15645:230:34"
                              }
                            ],
                            "id": 6975,
                            "name": "ExpressionStatement",
                            "src": "15645:230:34"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        },
                                        {
                                          "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                          "typeString": "enum Bridge.ProposalStatus"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6217,
                                      "type": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)",
                                      "value": "ProposalEvent"
                                    },
                                    "id": 6976,
                                    "name": "Identifier",
                                    "src": "15895:13:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6856,
                                      "type": "uint8",
                                      "value": "domainID"
                                    },
                                    "id": 6977,
                                    "name": "Identifier",
                                    "src": "15909:8:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6858,
                                      "type": "uint64",
                                      "value": "depositNonce"
                                    },
                                    "id": 6978,
                                    "name": "Identifier",
                                    "src": "15919:12:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "Active",
                                      "referencedDeclaration": null,
                                      "type": "enum Bridge.ProposalStatus"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6158,
                                          "type": "type(enum Bridge.ProposalStatus)",
                                          "value": "ProposalStatus"
                                        },
                                        "id": 6979,
                                        "name": "Identifier",
                                        "src": "15933:14:34"
                                      }
                                    ],
                                    "id": 6980,
                                    "name": "MemberAccess",
                                    "src": "15933:21:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6891,
                                      "type": "bytes32",
                                      "value": "dataHash"
                                    },
                                    "id": 6981,
                                    "name": "Identifier",
                                    "src": "15956:8:34"
                                  }
                                ],
                                "id": 6982,
                                "name": "FunctionCall",
                                "src": "15895:70:34"
                              }
                            ],
                            "id": 6983,
                            "name": "EmitStatement",
                            "src": "15890:75:34"
                          }
                        ],
                        "id": 6984,
                        "name": "Block",
                        "src": "15631:345:34"
                      },
                      {
                        "attributes": {
                          "falseBody": null
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              },
                              "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
                                  ],
                                  "tryCall": false,
                                  "type": "uint40",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint40)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint40",
                                          "type": null
                                        },
                                        "id": 6985,
                                        "name": "ElementaryTypeName",
                                        "src": "15986:6:34"
                                      }
                                    ],
                                    "id": 6986,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "15986:6:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint40",
                                              "typeString": "uint40"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 10361,
                                          "type": "function (uint256,uint256) pure returns (uint256)",
                                          "value": "sub"
                                        },
                                        "id": 6987,
                                        "name": "Identifier",
                                        "src": "15993:3:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "number",
                                          "referencedDeclaration": null,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": -4,
                                              "type": "block",
                                              "value": "block"
                                            },
                                            "id": 6988,
                                            "name": "Identifier",
                                            "src": "15997:5:34"
                                          }
                                        ],
                                        "id": 6989,
                                        "name": "MemberAccess",
                                        "src": "15997:12:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_proposedBlock",
                                          "referencedDeclaration": 6166,
                                          "type": "uint40"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6901,
                                              "type": "struct Bridge.Proposal memory",
                                              "value": "proposal"
                                            },
                                            "id": 6990,
                                            "name": "Identifier",
                                            "src": "16011:8:34"
                                          }
                                        ],
                                        "id": 6991,
                                        "name": "MemberAccess",
                                        "src": "16011:23:34"
                                      }
                                    ],
                                    "id": 6992,
                                    "name": "FunctionCall",
                                    "src": "15993:42:34"
                                  }
                                ],
                                "id": 6993,
                                "name": "FunctionCall",
                                "src": "15986:50:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6152,
                                  "type": "uint40",
                                  "value": "_expiry"
                                },
                                "id": 6994,
                                "name": "Identifier",
                                "src": "16039:7:34"
                              }
                            ],
                            "id": 6995,
                            "name": "BinaryOperation",
                            "src": "15986:60:34"
                          },
                          {
                            "children": [
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "operator": "=",
                                      "type": "enum Bridge.ProposalStatus"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "member_name": "_status",
                                          "referencedDeclaration": 6160,
                                          "type": "enum Bridge.ProposalStatus"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6901,
                                              "type": "struct Bridge.Proposal memory",
                                              "value": "proposal"
                                            },
                                            "id": 6996,
                                            "name": "Identifier",
                                            "src": "16220:8:34"
                                          }
                                        ],
                                        "id": 6998,
                                        "name": "MemberAccess",
                                        "src": "16220:16:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "Cancelled",
                                          "referencedDeclaration": null,
                                          "type": "enum Bridge.ProposalStatus"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6158,
                                              "type": "type(enum Bridge.ProposalStatus)",
                                              "value": "ProposalStatus"
                                            },
                                            "id": 6999,
                                            "name": "Identifier",
                                            "src": "16239:14:34"
                                          }
                                        ],
                                        "id": 7000,
                                        "name": "MemberAccess",
                                        "src": "16239:24:34"
                                      }
                                    ],
                                    "id": 7001,
                                    "name": "Assignment",
                                    "src": "16220:43:34"
                                  }
                                ],
                                "id": 7002,
                                "name": "ExpressionStatement",
                                "src": "16220:43:34"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "tuple()",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint8",
                                              "typeString": "uint8"
                                            },
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            },
                                            {
                                              "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                              "typeString": "enum Bridge.ProposalStatus"
                                            },
                                            {
                                              "typeIdentifier": "t_bytes32",
                                              "typeString": "bytes32"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6217,
                                          "type": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)",
                                          "value": "ProposalEvent"
                                        },
                                        "id": 7003,
                                        "name": "Identifier",
                                        "src": "16283:13:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6856,
                                          "type": "uint8",
                                          "value": "domainID"
                                        },
                                        "id": 7004,
                                        "name": "Identifier",
                                        "src": "16297:8:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6858,
                                          "type": "uint64",
                                          "value": "depositNonce"
                                        },
                                        "id": 7005,
                                        "name": "Identifier",
                                        "src": "16307:12:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "member_name": "Cancelled",
                                          "referencedDeclaration": null,
                                          "type": "enum Bridge.ProposalStatus"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6158,
                                              "type": "type(enum Bridge.ProposalStatus)",
                                              "value": "ProposalStatus"
                                            },
                                            "id": 7006,
                                            "name": "Identifier",
                                            "src": "16321:14:34"
                                          }
                                        ],
                                        "id": 7007,
                                        "name": "MemberAccess",
                                        "src": "16321:24:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6891,
                                          "type": "bytes32",
                                          "value": "dataHash"
                                        },
                                        "id": 7008,
                                        "name": "Identifier",
                                        "src": "16347:8:34"
                                      }
                                    ],
                                    "id": 7009,
                                    "name": "FunctionCall",
                                    "src": "16283:73:34"
                                  }
                                ],
                                "id": 7010,
                                "name": "EmitStatement",
                                "src": "16278:78:34"
                              }
                            ],
                            "id": 7011,
                            "name": "Block",
                            "src": "16048:319:34"
                          }
                        ],
                        "id": 7012,
                        "name": "IfStatement",
                        "src": "15982:385:34"
                      }
                    ],
                    "id": 7013,
                    "name": "IfStatement",
                    "src": "15582:785:34"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                            "typeString": "enum Bridge.ProposalStatus"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "!=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_status",
                              "referencedDeclaration": 6160,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6901,
                                  "type": "struct Bridge.Proposal memory",
                                  "value": "proposal"
                                },
                                "id": 7014,
                                "name": "Identifier",
                                "src": "16381:8:34"
                              }
                            ],
                            "id": 7015,
                            "name": "MemberAccess",
                            "src": "16381:16:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Cancelled",
                              "referencedDeclaration": null,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6158,
                                  "type": "type(enum Bridge.ProposalStatus)",
                                  "value": "ProposalStatus"
                                },
                                "id": 7016,
                                "name": "Identifier",
                                "src": "16401:14:34"
                              }
                            ],
                            "id": 7017,
                            "name": "MemberAccess",
                            "src": "16401:24:34"
                          }
                        ],
                        "id": 7018,
                        "name": "BinaryOperation",
                        "src": "16381:44:34"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "=",
                                  "type": "uint200"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "_yesVotes",
                                      "referencedDeclaration": 6162,
                                      "type": "uint200"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6901,
                                          "type": "struct Bridge.Proposal memory",
                                          "value": "proposal"
                                        },
                                        "id": 7019,
                                        "name": "Identifier",
                                        "src": "16441:8:34"
                                      }
                                    ],
                                    "id": 7021,
                                    "name": "MemberAccess",
                                    "src": "16441:18:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint200",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "toUint200",
                                          "referencedDeclaration": 10274,
                                          "type": "function (uint256) pure returns (uint200)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isInlineArray": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "type": "uint256"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "commonType": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  },
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "operator": "|",
                                                  "type": "uint256"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "_yesVotes",
                                                      "referencedDeclaration": 6162,
                                                      "type": "uint200"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 6901,
                                                          "type": "struct Bridge.Proposal memory",
                                                          "value": "proposal"
                                                        },
                                                        "id": 7022,
                                                        "name": "Identifier",
                                                        "src": "16463:8:34"
                                                      }
                                                    ],
                                                    "id": 7023,
                                                    "name": "MemberAccess",
                                                    "src": "16463:18:34"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": false,
                                                      "isStructConstructorCall": false,
                                                      "lValueRequested": false,
                                                      "names": [
                                                        null
                                                      ],
                                                      "tryCall": false,
                                                      "type": "uint256",
                                                      "type_conversion": false
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": [
                                                            {
                                                              "typeIdentifier": "t_address_payable",
                                                              "typeString": "address payable"
                                                            }
                                                          ],
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 6324,
                                                          "type": "function (address) view returns (uint256)",
                                                          "value": "_relayerBit"
                                                        },
                                                        "id": 7024,
                                                        "name": "Identifier",
                                                        "src": "16484:11:34"
                                                      },
                                                      {
                                                        "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": -15,
                                                              "type": "msg",
                                                              "value": "msg"
                                                            },
                                                            "id": 7025,
                                                            "name": "Identifier",
                                                            "src": "16496:3:34"
                                                          }
                                                        ],
                                                        "id": 7026,
                                                        "name": "MemberAccess",
                                                        "src": "16496:10:34"
                                                      }
                                                    ],
                                                    "id": 7027,
                                                    "name": "FunctionCall",
                                                    "src": "16484:23:34"
                                                  }
                                                ],
                                                "id": 7028,
                                                "name": "BinaryOperation",
                                                "src": "16463:44:34"
                                              }
                                            ],
                                            "id": 7029,
                                            "name": "TupleExpression",
                                            "src": "16462:46:34"
                                          }
                                        ],
                                        "id": 7030,
                                        "name": "MemberAccess",
                                        "src": "16462:56:34"
                                      }
                                    ],
                                    "id": 7031,
                                    "name": "FunctionCall",
                                    "src": "16462:58:34"
                                  }
                                ],
                                "id": 7032,
                                "name": "Assignment",
                                "src": "16441:79:34"
                              }
                            ],
                            "id": 7033,
                            "name": "ExpressionStatement",
                            "src": "16441:79:34"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "++",
                                  "prefix": false,
                                  "type": "uint8"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "member_name": "_yesVotesTotal",
                                      "referencedDeclaration": 6164,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6901,
                                          "type": "struct Bridge.Proposal memory",
                                          "value": "proposal"
                                        },
                                        "id": 7034,
                                        "name": "Identifier",
                                        "src": "16534:8:34"
                                      }
                                    ],
                                    "id": 7036,
                                    "name": "MemberAccess",
                                    "src": "16534:23:34"
                                  }
                                ],
                                "id": 7037,
                                "name": "UnaryOperation",
                                "src": "16534:25:34"
                              }
                            ],
                            "id": 7038,
                            "name": "ExpressionStatement",
                            "src": "16534:25:34"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        },
                                        {
                                          "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                          "typeString": "enum Bridge.ProposalStatus"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6227,
                                      "type": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)",
                                      "value": "ProposalVote"
                                    },
                                    "id": 7039,
                                    "name": "Identifier",
                                    "src": "16622:12:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6856,
                                      "type": "uint8",
                                      "value": "domainID"
                                    },
                                    "id": 7040,
                                    "name": "Identifier",
                                    "src": "16635:8:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6858,
                                      "type": "uint64",
                                      "value": "depositNonce"
                                    },
                                    "id": 7041,
                                    "name": "Identifier",
                                    "src": "16645:12:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "_status",
                                      "referencedDeclaration": 6160,
                                      "type": "enum Bridge.ProposalStatus"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6901,
                                          "type": "struct Bridge.Proposal memory",
                                          "value": "proposal"
                                        },
                                        "id": 7042,
                                        "name": "Identifier",
                                        "src": "16659:8:34"
                                      }
                                    ],
                                    "id": 7043,
                                    "name": "MemberAccess",
                                    "src": "16659:16:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6891,
                                      "type": "bytes32",
                                      "value": "dataHash"
                                    },
                                    "id": 7044,
                                    "name": "Identifier",
                                    "src": "16677:8:34"
                                  }
                                ],
                                "id": 7045,
                                "name": "FunctionCall",
                                "src": "16622:64:34"
                              }
                            ],
                            "id": 7046,
                            "name": "EmitStatement",
                            "src": "16617:69:34"
                          },
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint8",
                                    "typeString": "uint8"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": ">=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "_yesVotesTotal",
                                      "referencedDeclaration": 6164,
                                      "type": "uint8"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6901,
                                          "type": "struct Bridge.Proposal memory",
                                          "value": "proposal"
                                        },
                                        "id": 7047,
                                        "name": "Identifier",
                                        "src": "16767:8:34"
                                      }
                                    ],
                                    "id": 7048,
                                    "name": "MemberAccess",
                                    "src": "16767:23:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6148,
                                      "type": "uint8",
                                      "value": "_relayerThreshold"
                                    },
                                    "id": 7049,
                                    "name": "Identifier",
                                    "src": "16794:17:34"
                                  }
                                ],
                                "id": 7050,
                                "name": "BinaryOperation",
                                "src": "16767:44:34"
                              },
                              {
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "operator": "=",
                                          "type": "enum Bridge.ProposalStatus"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": true,
                                              "member_name": "_status",
                                              "referencedDeclaration": 6160,
                                              "type": "enum Bridge.ProposalStatus"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6901,
                                                  "type": "struct Bridge.Proposal memory",
                                                  "value": "proposal"
                                                },
                                                "id": 7051,
                                                "name": "Identifier",
                                                "src": "16831:8:34"
                                              }
                                            ],
                                            "id": 7053,
                                            "name": "MemberAccess",
                                            "src": "16831:16:34"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "member_name": "Passed",
                                              "referencedDeclaration": null,
                                              "type": "enum Bridge.ProposalStatus"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6158,
                                                  "type": "type(enum Bridge.ProposalStatus)",
                                                  "value": "ProposalStatus"
                                                },
                                                "id": 7054,
                                                "name": "Identifier",
                                                "src": "16850:14:34"
                                              }
                                            ],
                                            "id": 7055,
                                            "name": "MemberAccess",
                                            "src": "16850:21:34"
                                          }
                                        ],
                                        "id": 7056,
                                        "name": "Assignment",
                                        "src": "16831:40:34"
                                      }
                                    ],
                                    "id": 7057,
                                    "name": "ExpressionStatement",
                                    "src": "16831:40:34"
                                  },
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "isStructConstructorCall": false,
                                          "lValueRequested": false,
                                          "names": [
                                            null
                                          ],
                                          "tryCall": false,
                                          "type": "tuple()",
                                          "type_conversion": false
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint8",
                                                  "typeString": "uint8"
                                                },
                                                {
                                                  "typeIdentifier": "t_uint64",
                                                  "typeString": "uint64"
                                                },
                                                {
                                                  "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                                  "typeString": "enum Bridge.ProposalStatus"
                                                },
                                                {
                                                  "typeIdentifier": "t_bytes32",
                                                  "typeString": "bytes32"
                                                }
                                              ],
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6217,
                                              "type": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)",
                                              "value": "ProposalEvent"
                                            },
                                            "id": 7058,
                                            "name": "Identifier",
                                            "src": "16894:13:34"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6856,
                                              "type": "uint8",
                                              "value": "domainID"
                                            },
                                            "id": 7059,
                                            "name": "Identifier",
                                            "src": "16908:8:34"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6858,
                                              "type": "uint64",
                                              "value": "depositNonce"
                                            },
                                            "id": 7060,
                                            "name": "Identifier",
                                            "src": "16918:12:34"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "member_name": "Passed",
                                              "referencedDeclaration": null,
                                              "type": "enum Bridge.ProposalStatus"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6158,
                                                  "type": "type(enum Bridge.ProposalStatus)",
                                                  "value": "ProposalStatus"
                                                },
                                                "id": 7061,
                                                "name": "Identifier",
                                                "src": "16932:14:34"
                                              }
                                            ],
                                            "id": 7062,
                                            "name": "MemberAccess",
                                            "src": "16932:21:34"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 6891,
                                              "type": "bytes32",
                                              "value": "dataHash"
                                            },
                                            "id": 7063,
                                            "name": "Identifier",
                                            "src": "16955:8:34"
                                          }
                                        ],
                                        "id": 7064,
                                        "name": "FunctionCall",
                                        "src": "16894:70:34"
                                      }
                                    ],
                                    "id": 7065,
                                    "name": "EmitStatement",
                                    "src": "16889:75:34"
                                  }
                                ],
                                "id": 7066,
                                "name": "Block",
                                "src": "16813:166:34"
                              }
                            ],
                            "id": 7067,
                            "name": "IfStatement",
                            "src": "16763:216:34"
                          }
                        ],
                        "id": 7068,
                        "name": "Block",
                        "src": "16427:562:34"
                      }
                    ],
                    "id": 7069,
                    "name": "IfStatement",
                    "src": "16377:612:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct Bridge.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct Bridge.Proposal storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6181,
                                      "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))",
                                      "value": "_proposals"
                                    },
                                    "id": 7070,
                                    "name": "Identifier",
                                    "src": "16998:10:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6876,
                                      "type": "uint72",
                                      "value": "nonceAndID"
                                    },
                                    "id": 7071,
                                    "name": "Identifier",
                                    "src": "17009:10:34"
                                  }
                                ],
                                "id": 7073,
                                "name": "IndexAccess",
                                "src": "16998:22:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6891,
                                  "type": "bytes32",
                                  "value": "dataHash"
                                },
                                "id": 7072,
                                "name": "Identifier",
                                "src": "17021:8:34"
                              }
                            ],
                            "id": 7074,
                            "name": "IndexAccess",
                            "src": "16998:32:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6901,
                              "type": "struct Bridge.Proposal memory",
                              "value": "proposal"
                            },
                            "id": 7075,
                            "name": "Identifier",
                            "src": "17033:8:34"
                          }
                        ],
                        "id": 7076,
                        "name": "Assignment",
                        "src": "16998:43:34"
                      }
                    ],
                    "id": 7077,
                    "name": "ExpressionStatement",
                    "src": "16998:43:34"
                  },
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                            "typeString": "enum Bridge.ProposalStatus"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "_status",
                              "referencedDeclaration": 6160,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6901,
                                  "type": "struct Bridge.Proposal memory",
                                  "value": "proposal"
                                },
                                "id": 7078,
                                "name": "Identifier",
                                "src": "17056:8:34"
                              }
                            ],
                            "id": 7079,
                            "name": "MemberAccess",
                            "src": "17056:16:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Passed",
                              "referencedDeclaration": null,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6158,
                                  "type": "type(enum Bridge.ProposalStatus)",
                                  "value": "ProposalStatus"
                                },
                                "id": 7080,
                                "name": "Identifier",
                                "src": "17076:14:34"
                              }
                            ],
                            "id": 7081,
                            "name": "MemberAccess",
                            "src": "17076:21:34"
                          }
                        ],
                        "id": 7082,
                        "name": "BinaryOperation",
                        "src": "17056:41:34"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint8",
                                          "typeString": "uint8"
                                        },
                                        {
                                          "typeIdentifier": "t_uint64",
                                          "typeString": "uint64"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7310,
                                      "type": "function (uint8,uint64,bytes calldata,bytes32,bool)",
                                      "value": "executeProposal"
                                    },
                                    "id": 7083,
                                    "name": "Identifier",
                                    "src": "17113:15:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6856,
                                      "type": "uint8",
                                      "value": "domainID"
                                    },
                                    "id": 7084,
                                    "name": "Identifier",
                                    "src": "17129:8:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6858,
                                      "type": "uint64",
                                      "value": "depositNonce"
                                    },
                                    "id": 7085,
                                    "name": "Identifier",
                                    "src": "17139:12:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6862,
                                      "type": "bytes calldata",
                                      "value": "data"
                                    },
                                    "id": 7086,
                                    "name": "Identifier",
                                    "src": "17153:4:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6860,
                                      "type": "bytes32",
                                      "value": "resourceID"
                                    },
                                    "id": 7087,
                                    "name": "Identifier",
                                    "src": "17159:10:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "66616c7365",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "bool",
                                      "type": "bool",
                                      "value": "false"
                                    },
                                    "id": 7088,
                                    "name": "Literal",
                                    "src": "17171:5:34"
                                  }
                                ],
                                "id": 7089,
                                "name": "FunctionCall",
                                "src": "17113:64:34"
                              }
                            ],
                            "id": 7090,
                            "name": "ExpressionStatement",
                            "src": "17113:64:34"
                          }
                        ],
                        "id": 7091,
                        "name": "Block",
                        "src": "17099:89:34"
                      }
                    ],
                    "id": 7092,
                    "name": "IfStatement",
                    "src": "17052:136:34"
                  }
                ],
                "id": 7093,
                "name": "Block",
                "src": "14851:2343:34"
              }
            ],
            "id": 7094,
            "name": "FunctionDefinition",
            "src": "14715:2479:34"
          },
          {
            "attributes": {
              "functionSelector": "17f03ce5",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "cancelProposal",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Cancels a deposit proposal that has not been executed yet.\n@notice Only callable by relayers when Bridge is not paused.\n@param domainID ID of chain deposit originated from.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param dataHash Hash of data originally provided when deposit was made.\n@notice Proposal must be past expiry threshold.\n@notice Emits {ProposalEvent} event with status {Cancelled}."
                },
                "id": 7095,
                "name": "StructuredDocumentation",
                "src": "17200:502:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "domainID",
                      "overrides": null,
                      "scope": 7186,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 7096,
                        "name": "ElementaryTypeName",
                        "src": "17731:5:34"
                      }
                    ],
                    "id": 7097,
                    "name": "VariableDeclaration",
                    "src": "17731:14:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "depositNonce",
                      "overrides": null,
                      "scope": 7186,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 7098,
                        "name": "ElementaryTypeName",
                        "src": "17747:6:34"
                      }
                    ],
                    "id": 7099,
                    "name": "VariableDeclaration",
                    "src": "17747:19:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "dataHash",
                      "overrides": null,
                      "scope": 7186,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 7100,
                        "name": "ElementaryTypeName",
                        "src": "17768:7:34"
                      }
                    ],
                    "id": 7101,
                    "name": "VariableDeclaration",
                    "src": "17768:16:34"
                  }
                ],
                "id": 7102,
                "name": "ParameterList",
                "src": "17730:55:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7105,
                "name": "ParameterList",
                "src": "17812:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6250,
                      "type": "modifier ()",
                      "value": "onlyAdminOrRelayer"
                    },
                    "id": 7103,
                    "name": "Identifier",
                    "src": "17793:18:34"
                  }
                ],
                "id": 7104,
                "name": "ModifierInvocation",
                "src": "17793:18:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        7107
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "nonceAndID",
                          "overrides": null,
                          "scope": 7185,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint72",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint72",
                              "type": "uint72"
                            },
                            "id": 7106,
                            "name": "ElementaryTypeName",
                            "src": "17822:6:34"
                          }
                        ],
                        "id": 7107,
                        "name": "VariableDeclaration",
                        "src": "17822:17:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "|",
                          "type": "uint72"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint72"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint72",
                                    "typeString": "uint72"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<<",
                                  "type": "uint72"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint72",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint72)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint72",
                                              "type": null
                                            },
                                            "id": 7108,
                                            "name": "ElementaryTypeName",
                                            "src": "17843:6:34"
                                          }
                                        ],
                                        "id": 7109,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "17843:6:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 7099,
                                          "type": "uint64",
                                          "value": "depositNonce"
                                        },
                                        "id": 7110,
                                        "name": "Identifier",
                                        "src": "17850:12:34"
                                      }
                                    ],
                                    "id": 7111,
                                    "name": "FunctionCall",
                                    "src": "17843:20:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 7112,
                                    "name": "Literal",
                                    "src": "17867:1:34"
                                  }
                                ],
                                "id": 7113,
                                "name": "BinaryOperation",
                                "src": "17843:25:34"
                              }
                            ],
                            "id": 7114,
                            "name": "TupleExpression",
                            "src": "17842:27:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint72",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint72)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint72",
                                      "type": null
                                    },
                                    "id": 7115,
                                    "name": "ElementaryTypeName",
                                    "src": "17872:6:34"
                                  }
                                ],
                                "id": 7116,
                                "name": "ElementaryTypeNameExpression",
                                "src": "17872:6:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7097,
                                  "type": "uint8",
                                  "value": "domainID"
                                },
                                "id": 7117,
                                "name": "Identifier",
                                "src": "17879:8:34"
                              }
                            ],
                            "id": 7118,
                            "name": "FunctionCall",
                            "src": "17872:16:34"
                          }
                        ],
                        "id": 7119,
                        "name": "BinaryOperation",
                        "src": "17842:46:34"
                      }
                    ],
                    "id": 7120,
                    "name": "VariableDeclarationStatement",
                    "src": "17822:66:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        7122
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "proposal",
                          "overrides": null,
                          "scope": 7185,
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "type": "struct Bridge.Proposal",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Proposal",
                              "referencedDeclaration": 6167,
                              "type": "struct Bridge.Proposal"
                            },
                            "id": 7121,
                            "name": "UserDefinedTypeName",
                            "src": "17898:8:34"
                          }
                        ],
                        "id": 7122,
                        "name": "VariableDeclaration",
                        "src": "17898:24:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Bridge.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6181,
                                  "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))",
                                  "value": "_proposals"
                                },
                                "id": 7123,
                                "name": "Identifier",
                                "src": "17925:10:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7107,
                                  "type": "uint72",
                                  "value": "nonceAndID"
                                },
                                "id": 7124,
                                "name": "Identifier",
                                "src": "17936:10:34"
                              }
                            ],
                            "id": 7125,
                            "name": "IndexAccess",
                            "src": "17925:22:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7101,
                              "type": "bytes32",
                              "value": "dataHash"
                            },
                            "id": 7126,
                            "name": "Identifier",
                            "src": "17948:8:34"
                          }
                        ],
                        "id": 7127,
                        "name": "IndexAccess",
                        "src": "17925:32:34"
                      }
                    ],
                    "id": 7128,
                    "name": "VariableDeclarationStatement",
                    "src": "17898:59:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        7130
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "currentStatus",
                          "overrides": null,
                          "scope": 7185,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "enum Bridge.ProposalStatus",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "ProposalStatus",
                              "referencedDeclaration": 6158,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "id": 7129,
                            "name": "UserDefinedTypeName",
                            "src": "17967:14:34"
                          }
                        ],
                        "id": 7130,
                        "name": "VariableDeclaration",
                        "src": "17967:28:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "_status",
                          "referencedDeclaration": 6160,
                          "type": "enum Bridge.ProposalStatus"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7122,
                              "type": "struct Bridge.Proposal memory",
                              "value": "proposal"
                            },
                            "id": 7131,
                            "name": "Identifier",
                            "src": "17998:8:34"
                          }
                        ],
                        "id": 7132,
                        "name": "MemberAccess",
                        "src": "17998:16:34"
                      }
                    ],
                    "id": 7133,
                    "name": "VariableDeclarationStatement",
                    "src": "17967:47:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_3863036f03bb39a81d63204f59d8caecfcc1db147fc7cc073a81bfb35752b3fa",
                                  "typeString": "literal_string \"Proposal cannot be cancelled\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 7134,
                            "name": "Identifier",
                            "src": "18025:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "||",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                    "typeString": "enum Bridge.ProposalStatus"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7130,
                                      "type": "enum Bridge.ProposalStatus",
                                      "value": "currentStatus"
                                    },
                                    "id": 7135,
                                    "name": "Identifier",
                                    "src": "18033:13:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "Active",
                                      "referencedDeclaration": null,
                                      "type": "enum Bridge.ProposalStatus"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6158,
                                          "type": "type(enum Bridge.ProposalStatus)",
                                          "value": "ProposalStatus"
                                        },
                                        "id": 7136,
                                        "name": "Identifier",
                                        "src": "18050:14:34"
                                      }
                                    ],
                                    "id": 7137,
                                    "name": "MemberAccess",
                                    "src": "18050:21:34"
                                  }
                                ],
                                "id": 7138,
                                "name": "BinaryOperation",
                                "src": "18033:38:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                    "typeString": "enum Bridge.ProposalStatus"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "==",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7130,
                                      "type": "enum Bridge.ProposalStatus",
                                      "value": "currentStatus"
                                    },
                                    "id": 7139,
                                    "name": "Identifier",
                                    "src": "18075:13:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "member_name": "Passed",
                                      "referencedDeclaration": null,
                                      "type": "enum Bridge.ProposalStatus"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 6158,
                                          "type": "type(enum Bridge.ProposalStatus)",
                                          "value": "ProposalStatus"
                                        },
                                        "id": 7140,
                                        "name": "Identifier",
                                        "src": "18092:14:34"
                                      }
                                    ],
                                    "id": 7141,
                                    "name": "MemberAccess",
                                    "src": "18092:21:34"
                                  }
                                ],
                                "id": 7142,
                                "name": "BinaryOperation",
                                "src": "18075:38:34"
                              }
                            ],
                            "id": 7143,
                            "name": "BinaryOperation",
                            "src": "18033:80:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "50726f706f73616c2063616e6e6f742062652063616e63656c6c6564",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Proposal cannot be cancelled\"",
                              "value": "Proposal cannot be cancelled"
                            },
                            "id": 7144,
                            "name": "Literal",
                            "src": "18127:30:34"
                          }
                        ],
                        "id": 7145,
                        "name": "FunctionCall",
                        "src": "18025:133:34"
                      }
                    ],
                    "id": 7146,
                    "name": "ExpressionStatement",
                    "src": "18025:133:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_683f5cd388e83d1592bd1ca665f25f51ebccd4deed2b3fc92e3fe6b96cb47225",
                                  "typeString": "literal_string \"Proposal not at expiry threshold\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 7147,
                            "name": "Identifier",
                            "src": "18168:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint40",
                                "typeString": "uint40"
                              },
                              "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
                                  ],
                                  "tryCall": false,
                                  "type": "uint40",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(uint40)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "name": "uint40",
                                          "type": null
                                        },
                                        "id": 7148,
                                        "name": "ElementaryTypeName",
                                        "src": "18176:6:34"
                                      }
                                    ],
                                    "id": 7149,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "18176:6:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint256",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            {
                                              "typeIdentifier": "t_uint40",
                                              "typeString": "uint40"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 10361,
                                          "type": "function (uint256,uint256) pure returns (uint256)",
                                          "value": "sub"
                                        },
                                        "id": 7150,
                                        "name": "Identifier",
                                        "src": "18183:3:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "number",
                                          "referencedDeclaration": null,
                                          "type": "uint256"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": -4,
                                              "type": "block",
                                              "value": "block"
                                            },
                                            "id": 7151,
                                            "name": "Identifier",
                                            "src": "18187:5:34"
                                          }
                                        ],
                                        "id": 7152,
                                        "name": "MemberAccess",
                                        "src": "18187:12:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "_proposedBlock",
                                          "referencedDeclaration": 6166,
                                          "type": "uint40"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 7122,
                                              "type": "struct Bridge.Proposal memory",
                                              "value": "proposal"
                                            },
                                            "id": 7153,
                                            "name": "Identifier",
                                            "src": "18201:8:34"
                                          }
                                        ],
                                        "id": 7154,
                                        "name": "MemberAccess",
                                        "src": "18201:23:34"
                                      }
                                    ],
                                    "id": 7155,
                                    "name": "FunctionCall",
                                    "src": "18183:42:34"
                                  }
                                ],
                                "id": 7156,
                                "name": "FunctionCall",
                                "src": "18176:50:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6152,
                                  "type": "uint40",
                                  "value": "_expiry"
                                },
                                "id": 7157,
                                "name": "Identifier",
                                "src": "18229:7:34"
                              }
                            ],
                            "id": 7158,
                            "name": "BinaryOperation",
                            "src": "18176:60:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "50726f706f73616c206e6f7420617420657870697279207468726573686f6c64",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Proposal not at expiry threshold\"",
                              "value": "Proposal not at expiry threshold"
                            },
                            "id": 7159,
                            "name": "Literal",
                            "src": "18238:34:34"
                          }
                        ],
                        "id": 7160,
                        "name": "FunctionCall",
                        "src": "18168:105:34"
                      }
                    ],
                    "id": 7161,
                    "name": "ExpressionStatement",
                    "src": "18168:105:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "enum Bridge.ProposalStatus"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "_status",
                              "referencedDeclaration": 6160,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7122,
                                  "type": "struct Bridge.Proposal memory",
                                  "value": "proposal"
                                },
                                "id": 7162,
                                "name": "Identifier",
                                "src": "18284:8:34"
                              }
                            ],
                            "id": 7164,
                            "name": "MemberAccess",
                            "src": "18284:16:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Cancelled",
                              "referencedDeclaration": null,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6158,
                                  "type": "type(enum Bridge.ProposalStatus)",
                                  "value": "ProposalStatus"
                                },
                                "id": 7165,
                                "name": "Identifier",
                                "src": "18303:14:34"
                              }
                            ],
                            "id": 7166,
                            "name": "MemberAccess",
                            "src": "18303:24:34"
                          }
                        ],
                        "id": 7167,
                        "name": "Assignment",
                        "src": "18284:43:34"
                      }
                    ],
                    "id": 7168,
                    "name": "ExpressionStatement",
                    "src": "18284:43:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "struct Bridge.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "struct Bridge.Proposal storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6181,
                                      "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))",
                                      "value": "_proposals"
                                    },
                                    "id": 7169,
                                    "name": "Identifier",
                                    "src": "18337:10:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7107,
                                      "type": "uint72",
                                      "value": "nonceAndID"
                                    },
                                    "id": 7170,
                                    "name": "Identifier",
                                    "src": "18348:10:34"
                                  }
                                ],
                                "id": 7172,
                                "name": "IndexAccess",
                                "src": "18337:22:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7101,
                                  "type": "bytes32",
                                  "value": "dataHash"
                                },
                                "id": 7171,
                                "name": "Identifier",
                                "src": "18360:8:34"
                              }
                            ],
                            "id": 7173,
                            "name": "IndexAccess",
                            "src": "18337:32:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7122,
                              "type": "struct Bridge.Proposal memory",
                              "value": "proposal"
                            },
                            "id": 7174,
                            "name": "Identifier",
                            "src": "18372:8:34"
                          }
                        ],
                        "id": 7175,
                        "name": "Assignment",
                        "src": "18337:43:34"
                      }
                    ],
                    "id": 7176,
                    "name": "ExpressionStatement",
                    "src": "18337:43:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                  "typeString": "enum Bridge.ProposalStatus"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6217,
                              "type": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)",
                              "value": "ProposalEvent"
                            },
                            "id": 7177,
                            "name": "Identifier",
                            "src": "18396:13:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7097,
                              "type": "uint8",
                              "value": "domainID"
                            },
                            "id": 7178,
                            "name": "Identifier",
                            "src": "18410:8:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7099,
                              "type": "uint64",
                              "value": "depositNonce"
                            },
                            "id": 7179,
                            "name": "Identifier",
                            "src": "18420:12:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Cancelled",
                              "referencedDeclaration": null,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6158,
                                  "type": "type(enum Bridge.ProposalStatus)",
                                  "value": "ProposalStatus"
                                },
                                "id": 7180,
                                "name": "Identifier",
                                "src": "18434:14:34"
                              }
                            ],
                            "id": 7181,
                            "name": "MemberAccess",
                            "src": "18434:24:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7101,
                              "type": "bytes32",
                              "value": "dataHash"
                            },
                            "id": 7182,
                            "name": "Identifier",
                            "src": "18460:8:34"
                          }
                        ],
                        "id": 7183,
                        "name": "FunctionCall",
                        "src": "18396:73:34"
                      }
                    ],
                    "id": 7184,
                    "name": "EmitStatement",
                    "src": "18391:78:34"
                  }
                ],
                "id": 7185,
                "name": "Block",
                "src": "17812:664:34"
              }
            ],
            "id": 7186,
            "name": "FunctionDefinition",
            "src": "17707:769:34"
          },
          {
            "attributes": {
              "functionSelector": "206a98fd",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "executeProposal",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Executes a deposit proposal that is considered passed using a specified handler contract.\n@notice Only callable by relayers when Bridge is not paused.\n@param domainID ID of chain deposit originated from.\n@param resourceID ResourceID to be used when making deposits.\n@param depositNonce ID of deposited generated by origin Bridge contract.\n@param data Data originally provided when deposit was made.\n@param revertOnFail Decision if the transaction should be reverted in case of handler's executeProposal is reverted or not.\n@notice Proposal must have Passed status.\n@notice Hash of {data} must equal proposal's {dataHash}.\n@notice Emits {ProposalEvent} event with status {Executed}.\n@notice Emits {FailedExecution} event with the failed reason."
                },
                "id": 7187,
                "name": "StructuredDocumentation",
                "src": "18482:851:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "domainID",
                      "overrides": null,
                      "scope": 7310,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint8",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint8",
                          "type": "uint8"
                        },
                        "id": 7188,
                        "name": "ElementaryTypeName",
                        "src": "19363:5:34"
                      }
                    ],
                    "id": 7189,
                    "name": "VariableDeclaration",
                    "src": "19363:14:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "depositNonce",
                      "overrides": null,
                      "scope": 7310,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint64",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint64",
                          "type": "uint64"
                        },
                        "id": 7190,
                        "name": "ElementaryTypeName",
                        "src": "19379:6:34"
                      }
                    ],
                    "id": 7191,
                    "name": "VariableDeclaration",
                    "src": "19379:19:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "data",
                      "overrides": null,
                      "scope": 7310,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "bytes",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes",
                          "type": "bytes"
                        },
                        "id": 7192,
                        "name": "ElementaryTypeName",
                        "src": "19400:5:34"
                      }
                    ],
                    "id": 7193,
                    "name": "VariableDeclaration",
                    "src": "19400:19:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "resourceID",
                      "overrides": null,
                      "scope": 7310,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 7194,
                        "name": "ElementaryTypeName",
                        "src": "19421:7:34"
                      }
                    ],
                    "id": 7195,
                    "name": "VariableDeclaration",
                    "src": "19421:18:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "revertOnFail",
                      "overrides": null,
                      "scope": 7310,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 7196,
                        "name": "ElementaryTypeName",
                        "src": "19441:4:34"
                      }
                    ],
                    "id": 7197,
                    "name": "VariableDeclaration",
                    "src": "19441:17:34"
                  }
                ],
                "id": 7198,
                "name": "ParameterList",
                "src": "19362:97:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7203,
                "name": "ParameterList",
                "src": "19494:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6257,
                      "type": "modifier ()",
                      "value": "onlyRelayers"
                    },
                    "id": 7199,
                    "name": "Identifier",
                    "src": "19467:12:34"
                  }
                ],
                "id": 7200,
                "name": "ModifierInvocation",
                "src": "19467:12:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 10190,
                      "type": "modifier ()",
                      "value": "whenNotPaused"
                    },
                    "id": 7201,
                    "name": "Identifier",
                    "src": "19480:13:34"
                  }
                ],
                "id": 7202,
                "name": "ModifierInvocation",
                "src": "19480:13:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "assignments": [
                        7205
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "handler",
                          "overrides": null,
                          "scope": 7309,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "address",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "nonpayable",
                              "type": "address"
                            },
                            "id": 7204,
                            "name": "ElementaryTypeName",
                            "src": "19504:7:34"
                          }
                        ],
                        "id": 7205,
                        "name": "VariableDeclaration",
                        "src": "19504:15:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6175,
                              "type": "mapping(bytes32 => address)",
                              "value": "_resourceIDToHandlerAddress"
                            },
                            "id": 7206,
                            "name": "Identifier",
                            "src": "19522:27:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7195,
                              "type": "bytes32",
                              "value": "resourceID"
                            },
                            "id": 7207,
                            "name": "Identifier",
                            "src": "19550:10:34"
                          }
                        ],
                        "id": 7208,
                        "name": "IndexAccess",
                        "src": "19522:39:34"
                      }
                    ],
                    "id": 7209,
                    "name": "VariableDeclarationStatement",
                    "src": "19504:57:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        7211
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "nonceAndID",
                          "overrides": null,
                          "scope": 7309,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "uint72",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint72",
                              "type": "uint72"
                            },
                            "id": 7210,
                            "name": "ElementaryTypeName",
                            "src": "19571:6:34"
                          }
                        ],
                        "id": 7211,
                        "name": "VariableDeclaration",
                        "src": "19571:17:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint72",
                            "typeString": "uint72"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "|",
                          "type": "uint72"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "uint72"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint72",
                                    "typeString": "uint72"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "<<",
                                  "type": "uint72"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "tryCall": false,
                                      "type": "uint72",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "type": "type(uint72)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "uint72",
                                              "type": null
                                            },
                                            "id": 7212,
                                            "name": "ElementaryTypeName",
                                            "src": "19592:6:34"
                                          }
                                        ],
                                        "id": 7213,
                                        "name": "ElementaryTypeNameExpression",
                                        "src": "19592:6:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 7191,
                                          "type": "uint64",
                                          "value": "depositNonce"
                                        },
                                        "id": 7214,
                                        "name": "Identifier",
                                        "src": "19599:12:34"
                                      }
                                    ],
                                    "id": 7215,
                                    "name": "FunctionCall",
                                    "src": "19592:20:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "38",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 8",
                                      "value": "8"
                                    },
                                    "id": 7216,
                                    "name": "Literal",
                                    "src": "19616:1:34"
                                  }
                                ],
                                "id": 7217,
                                "name": "BinaryOperation",
                                "src": "19592:25:34"
                              }
                            ],
                            "id": 7218,
                            "name": "TupleExpression",
                            "src": "19591:27:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "uint72",
                              "type_conversion": true
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "type": "type(uint72)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "uint72",
                                      "type": null
                                    },
                                    "id": 7219,
                                    "name": "ElementaryTypeName",
                                    "src": "19621:6:34"
                                  }
                                ],
                                "id": 7220,
                                "name": "ElementaryTypeNameExpression",
                                "src": "19621:6:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7189,
                                  "type": "uint8",
                                  "value": "domainID"
                                },
                                "id": 7221,
                                "name": "Identifier",
                                "src": "19628:8:34"
                              }
                            ],
                            "id": 7222,
                            "name": "FunctionCall",
                            "src": "19621:16:34"
                          }
                        ],
                        "id": 7223,
                        "name": "BinaryOperation",
                        "src": "19591:46:34"
                      }
                    ],
                    "id": 7224,
                    "name": "VariableDeclarationStatement",
                    "src": "19571:66:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        7226
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "dataHash",
                          "overrides": null,
                          "scope": 7309,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "bytes32",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "bytes32",
                              "type": "bytes32"
                            },
                            "id": 7225,
                            "name": "ElementaryTypeName",
                            "src": "19647:7:34"
                          }
                        ],
                        "id": 7226,
                        "name": "VariableDeclaration",
                        "src": "19647:16:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": -8,
                              "type": "function (bytes memory) pure returns (bytes32)",
                              "value": "keccak256"
                            },
                            "id": 7227,
                            "name": "Identifier",
                            "src": "19666:9:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "tryCall": false,
                              "type": "bytes memory",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_bytes_calldata_ptr",
                                      "typeString": "bytes calldata"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "encodePacked",
                                  "referencedDeclaration": null,
                                  "type": "function () pure returns (bytes memory)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": -1,
                                      "type": "abi",
                                      "value": "abi"
                                    },
                                    "id": 7228,
                                    "name": "Identifier",
                                    "src": "19676:3:34"
                                  }
                                ],
                                "id": 7229,
                                "name": "MemberAccess",
                                "src": "19676:16:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7205,
                                  "type": "address",
                                  "value": "handler"
                                },
                                "id": 7230,
                                "name": "Identifier",
                                "src": "19693:7:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7193,
                                  "type": "bytes calldata",
                                  "value": "data"
                                },
                                "id": 7231,
                                "name": "Identifier",
                                "src": "19702:4:34"
                              }
                            ],
                            "id": 7232,
                            "name": "FunctionCall",
                            "src": "19676:31:34"
                          }
                        ],
                        "id": 7233,
                        "name": "FunctionCall",
                        "src": "19666:42:34"
                      }
                    ],
                    "id": 7234,
                    "name": "VariableDeclarationStatement",
                    "src": "19647:61:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        7236
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "proposal",
                          "overrides": null,
                          "scope": 7309,
                          "stateVariable": false,
                          "storageLocation": "storage",
                          "type": "struct Bridge.Proposal",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "Proposal",
                              "referencedDeclaration": 6167,
                              "type": "struct Bridge.Proposal"
                            },
                            "id": 7235,
                            "name": "UserDefinedTypeName",
                            "src": "19718:8:34"
                          }
                        ],
                        "id": 7236,
                        "name": "VariableDeclaration",
                        "src": "19718:25:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "struct Bridge.Proposal storage ref"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "mapping(bytes32 => struct Bridge.Proposal storage ref)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6181,
                                  "type": "mapping(uint72 => mapping(bytes32 => struct Bridge.Proposal storage ref))",
                                  "value": "_proposals"
                                },
                                "id": 7237,
                                "name": "Identifier",
                                "src": "19746:10:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7211,
                                  "type": "uint72",
                                  "value": "nonceAndID"
                                },
                                "id": 7238,
                                "name": "Identifier",
                                "src": "19757:10:34"
                              }
                            ],
                            "id": 7239,
                            "name": "IndexAccess",
                            "src": "19746:22:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7226,
                              "type": "bytes32",
                              "value": "dataHash"
                            },
                            "id": 7240,
                            "name": "Identifier",
                            "src": "19769:8:34"
                          }
                        ],
                        "id": 7241,
                        "name": "IndexAccess",
                        "src": "19746:32:34"
                      }
                    ],
                    "id": 7242,
                    "name": "VariableDeclarationStatement",
                    "src": "19718:60:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_67a02cc877fbd6bd552d59c5da337acfaeb33dc5de9dd3b3b318b6e20c21a410",
                                  "typeString": "literal_string \"Proposal must have Passed status\""
                                }
                              ],
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "type": "function (bool,string memory) pure",
                              "value": "require"
                            },
                            "id": 7243,
                            "name": "Identifier",
                            "src": "19789:7:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                "typeString": "enum Bridge.ProposalStatus"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "==",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "_status",
                                  "referencedDeclaration": 6160,
                                  "type": "enum Bridge.ProposalStatus"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7236,
                                      "type": "struct Bridge.Proposal storage pointer",
                                      "value": "proposal"
                                    },
                                    "id": 7244,
                                    "name": "Identifier",
                                    "src": "19797:8:34"
                                  }
                                ],
                                "id": 7245,
                                "name": "MemberAccess",
                                "src": "19797:16:34"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "member_name": "Passed",
                                  "referencedDeclaration": null,
                                  "type": "enum Bridge.ProposalStatus"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 6158,
                                      "type": "type(enum Bridge.ProposalStatus)",
                                      "value": "ProposalStatus"
                                    },
                                    "id": 7246,
                                    "name": "Identifier",
                                    "src": "19817:14:34"
                                  }
                                ],
                                "id": 7247,
                                "name": "MemberAccess",
                                "src": "19817:21:34"
                              }
                            ],
                            "id": 7248,
                            "name": "BinaryOperation",
                            "src": "19797:41:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "50726f706f73616c206d75737420686176652050617373656420737461747573",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "string",
                              "type": "literal_string \"Proposal must have Passed status\"",
                              "value": "Proposal must have Passed status"
                            },
                            "id": 7249,
                            "name": "Literal",
                            "src": "19840:34:34"
                          }
                        ],
                        "id": 7250,
                        "name": "FunctionCall",
                        "src": "19789:86:34"
                      }
                    ],
                    "id": 7251,
                    "name": "ExpressionStatement",
                    "src": "19789:86:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "enum Bridge.ProposalStatus"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "member_name": "_status",
                              "referencedDeclaration": 6160,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7236,
                                  "type": "struct Bridge.Proposal storage pointer",
                                  "value": "proposal"
                                },
                                "id": 7252,
                                "name": "Identifier",
                                "src": "19886:8:34"
                              }
                            ],
                            "id": 7254,
                            "name": "MemberAccess",
                            "src": "19886:16:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Executed",
                              "referencedDeclaration": null,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6158,
                                  "type": "type(enum Bridge.ProposalStatus)",
                                  "value": "ProposalStatus"
                                },
                                "id": 7255,
                                "name": "Identifier",
                                "src": "19905:14:34"
                              }
                            ],
                            "id": 7256,
                            "name": "MemberAccess",
                            "src": "19905:23:34"
                          }
                        ],
                        "id": 7257,
                        "name": "Assignment",
                        "src": "19886:42:34"
                      }
                    ],
                    "id": 7258,
                    "name": "ExpressionStatement",
                    "src": "19886:42:34"
                  },
                  {
                    "attributes": {
                      "assignments": [
                        7260
                      ]
                    },
                    "children": [
                      {
                        "attributes": {
                          "constant": false,
                          "mutability": "mutable",
                          "name": "depositHandler",
                          "overrides": null,
                          "scope": 7309,
                          "stateVariable": false,
                          "storageLocation": "default",
                          "type": "contract IDepositExecute",
                          "value": null,
                          "visibility": "internal"
                        },
                        "children": [
                          {
                            "attributes": {
                              "contractScope": null,
                              "name": "IDepositExecute",
                              "referencedDeclaration": 9816,
                              "type": "contract IDepositExecute"
                            },
                            "id": 7259,
                            "name": "UserDefinedTypeName",
                            "src": "19938:15:34"
                          }
                        ],
                        "id": 7260,
                        "name": "VariableDeclaration",
                        "src": "19938:30:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "contract IDepositExecute",
                          "type_conversion": true
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 9816,
                              "type": "type(contract IDepositExecute)",
                              "value": "IDepositExecute"
                            },
                            "id": 7261,
                            "name": "Identifier",
                            "src": "19971:15:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7205,
                              "type": "address",
                              "value": "handler"
                            },
                            "id": 7262,
                            "name": "Identifier",
                            "src": "19987:7:34"
                          }
                        ],
                        "id": 7263,
                        "name": "FunctionCall",
                        "src": "19971:24:34"
                      }
                    ],
                    "id": 7264,
                    "name": "VariableDeclarationStatement",
                    "src": "19938:57:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "overloadedDeclarations": [
                            null
                          ],
                          "referencedDeclaration": 7197,
                          "type": "bool",
                          "value": "revertOnFail"
                        },
                        "id": 7265,
                        "name": "Identifier",
                        "src": "20010:12:34"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "executeProposal",
                                      "referencedDeclaration": 9815,
                                      "type": "function (bytes32,bytes memory) external"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 7260,
                                          "type": "contract IDepositExecute",
                                          "value": "depositHandler"
                                        },
                                        "id": 7266,
                                        "name": "Identifier",
                                        "src": "20038:14:34"
                                      }
                                    ],
                                    "id": 7268,
                                    "name": "MemberAccess",
                                    "src": "20038:30:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7195,
                                      "type": "bytes32",
                                      "value": "resourceID"
                                    },
                                    "id": 7269,
                                    "name": "Identifier",
                                    "src": "20069:10:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7193,
                                      "type": "bytes calldata",
                                      "value": "data"
                                    },
                                    "id": 7270,
                                    "name": "Identifier",
                                    "src": "20081:4:34"
                                  }
                                ],
                                "id": 7271,
                                "name": "FunctionCall",
                                "src": "20038:48:34"
                              }
                            ],
                            "id": 7272,
                            "name": "ExpressionStatement",
                            "src": "20038:48:34"
                          }
                        ],
                        "id": 7273,
                        "name": "Block",
                        "src": "20024:73:34"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": true,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_bytes_calldata_ptr",
                                          "typeString": "bytes calldata"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "executeProposal",
                                      "referencedDeclaration": 9815,
                                      "type": "function (bytes32,bytes memory) external"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 7260,
                                          "type": "contract IDepositExecute",
                                          "value": "depositHandler"
                                        },
                                        "id": 7274,
                                        "name": "Identifier",
                                        "src": "20121:14:34"
                                      }
                                    ],
                                    "id": 7275,
                                    "name": "MemberAccess",
                                    "src": "20121:30:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7195,
                                      "type": "bytes32",
                                      "value": "resourceID"
                                    },
                                    "id": 7276,
                                    "name": "Identifier",
                                    "src": "20152:10:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 7193,
                                      "type": "bytes calldata",
                                      "value": "data"
                                    },
                                    "id": 7277,
                                    "name": "Identifier",
                                    "src": "20164:4:34"
                                  }
                                ],
                                "id": 7278,
                                "name": "FunctionCall",
                                "src": "20121:48:34"
                              },
                              {
                                "attributes": {
                                  "errorName": "",
                                  "parameters": null
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "statements": [
                                        null
                                      ]
                                    },
                                    "children": [],
                                    "id": 7279,
                                    "name": "Block",
                                    "src": "20170:15:34"
                                  }
                                ],
                                "id": 7280,
                                "name": "TryCatchClause",
                                "src": "20170:15:34"
                              },
                              {
                                "attributes": {
                                  "errorName": ""
                                },
                                "children": [
                                  {
                                    "children": [
                                      {
                                        "attributes": {
                                          "constant": false,
                                          "mutability": "mutable",
                                          "name": "lowLevelData",
                                          "overrides": null,
                                          "scope": 7297,
                                          "stateVariable": false,
                                          "storageLocation": "memory",
                                          "type": "bytes",
                                          "value": null,
                                          "visibility": "internal"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "name": "bytes",
                                              "type": "bytes"
                                            },
                                            "id": 7281,
                                            "name": "ElementaryTypeName",
                                            "src": "20193:5:34"
                                          }
                                        ],
                                        "id": 7282,
                                        "name": "VariableDeclaration",
                                        "src": "20193:25:34"
                                      }
                                    ],
                                    "id": 7283,
                                    "name": "ParameterList",
                                    "src": "20192:27:34"
                                  },
                                  {
                                    "children": [
                                      {
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "operator": "=",
                                              "type": "enum Bridge.ProposalStatus"
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": true,
                                                  "isPure": false,
                                                  "lValueRequested": true,
                                                  "member_name": "_status",
                                                  "referencedDeclaration": 6160,
                                                  "type": "enum Bridge.ProposalStatus"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 7236,
                                                      "type": "struct Bridge.Proposal storage pointer",
                                                      "value": "proposal"
                                                    },
                                                    "id": 7284,
                                                    "name": "Identifier",
                                                    "src": "20238:8:34"
                                                  }
                                                ],
                                                "id": 7286,
                                                "name": "MemberAccess",
                                                "src": "20238:16:34"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "lValueRequested": false,
                                                  "member_name": "Passed",
                                                  "referencedDeclaration": null,
                                                  "type": "enum Bridge.ProposalStatus"
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 6158,
                                                      "type": "type(enum Bridge.ProposalStatus)",
                                                      "value": "ProposalStatus"
                                                    },
                                                    "id": 7287,
                                                    "name": "Identifier",
                                                    "src": "20257:14:34"
                                                  }
                                                ],
                                                "id": 7288,
                                                "name": "MemberAccess",
                                                "src": "20257:21:34"
                                              }
                                            ],
                                            "id": 7289,
                                            "name": "Assignment",
                                            "src": "20238:40:34"
                                          }
                                        ],
                                        "id": 7290,
                                        "name": "ExpressionStatement",
                                        "src": "20238:40:34"
                                      },
                                      {
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "tryCall": false,
                                              "type": "tuple()",
                                              "type_conversion": false
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_bytes_memory_ptr",
                                                      "typeString": "bytes memory"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 6231,
                                                  "type": "function (bytes memory)",
                                                  "value": "FailedHandlerExecution"
                                                },
                                                "id": 7291,
                                                "name": "Identifier",
                                                "src": "20301:22:34"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 7282,
                                                  "type": "bytes memory",
                                                  "value": "lowLevelData"
                                                },
                                                "id": 7292,
                                                "name": "Identifier",
                                                "src": "20324:12:34"
                                              }
                                            ],
                                            "id": 7293,
                                            "name": "FunctionCall",
                                            "src": "20301:36:34"
                                          }
                                        ],
                                        "id": 7294,
                                        "name": "EmitStatement",
                                        "src": "20296:41:34"
                                      },
                                      {
                                        "attributes": {
                                          "expression": null,
                                          "functionReturnParameters": 7203
                                        },
                                        "id": 7295,
                                        "name": "Return",
                                        "src": "20355:7:34"
                                      }
                                    ],
                                    "id": 7296,
                                    "name": "Block",
                                    "src": "20220:156:34"
                                  }
                                ],
                                "id": 7297,
                                "name": "TryCatchClause",
                                "src": "20186:190:34"
                              }
                            ],
                            "id": 7298,
                            "name": "TryStatement",
                            "src": "20117:259:34"
                          }
                        ],
                        "id": 7299,
                        "name": "Block",
                        "src": "20103:283:34"
                      }
                    ],
                    "id": 7300,
                    "name": "IfStatement",
                    "src": "20006:380:34"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "tryCall": false,
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_uint64",
                                  "typeString": "uint64"
                                },
                                {
                                  "typeIdentifier": "t_enum$_ProposalStatus_$6158",
                                  "typeString": "enum Bridge.ProposalStatus"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 6217,
                              "type": "function (uint8,uint64,enum Bridge.ProposalStatus,bytes32)",
                              "value": "ProposalEvent"
                            },
                            "id": 7301,
                            "name": "Identifier",
                            "src": "20409:13:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7189,
                              "type": "uint8",
                              "value": "domainID"
                            },
                            "id": 7302,
                            "name": "Identifier",
                            "src": "20423:8:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7191,
                              "type": "uint64",
                              "value": "depositNonce"
                            },
                            "id": 7303,
                            "name": "Identifier",
                            "src": "20433:12:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "member_name": "Executed",
                              "referencedDeclaration": null,
                              "type": "enum Bridge.ProposalStatus"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 6158,
                                  "type": "type(enum Bridge.ProposalStatus)",
                                  "value": "ProposalStatus"
                                },
                                "id": 7304,
                                "name": "Identifier",
                                "src": "20447:14:34"
                              }
                            ],
                            "id": 7305,
                            "name": "MemberAccess",
                            "src": "20447:23:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7226,
                              "type": "bytes32",
                              "value": "dataHash"
                            },
                            "id": 7306,
                            "name": "Identifier",
                            "src": "20472:8:34"
                          }
                        ],
                        "id": 7307,
                        "name": "FunctionCall",
                        "src": "20409:72:34"
                      }
                    ],
                    "id": 7308,
                    "name": "EmitStatement",
                    "src": "20404:77:34"
                  }
                ],
                "id": 7309,
                "name": "Block",
                "src": "19494:994:34"
              }
            ],
            "id": 7310,
            "name": "FunctionDefinition",
            "src": "19338:1150:34"
          },
          {
            "attributes": {
              "functionSelector": "4603ae38",
              "implemented": true,
              "isConstructor": false,
              "kind": "function",
              "name": "transferFunds",
              "overrides": null,
              "scope": 7346,
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            "children": [
              {
                "attributes": {
                  "text": "@notice Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1.\nThis means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0.\n@param addrs Array of addresses to transfer {amounts} to.\n@param amounts Array of amonuts to transfer to {addrs}."
                },
                "id": 7311,
                "name": "StructuredDocumentation",
                "src": "20494:379:34"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "addrs",
                      "overrides": null,
                      "scope": 7345,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "address payable[]",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "address payable[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "address",
                              "stateMutability": "payable",
                              "type": "address payable"
                            },
                            "id": 7312,
                            "name": "ElementaryTypeName",
                            "src": "20901:15:34"
                          }
                        ],
                        "id": 7313,
                        "name": "ArrayTypeName",
                        "src": "20901:17:34"
                      }
                    ],
                    "id": 7314,
                    "name": "VariableDeclaration",
                    "src": "20901:32:34"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "mutability": "mutable",
                      "name": "amounts",
                      "overrides": null,
                      "scope": 7345,
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "type": "uint256[]",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "length": null,
                          "type": "uint256[]"
                        },
                        "children": [
                          {
                            "attributes": {
                              "name": "uint",
                              "type": "uint256"
                            },
                            "id": 7315,
                            "name": "ElementaryTypeName",
                            "src": "20935:4:34"
                          }
                        ],
                        "id": 7316,
                        "name": "ArrayTypeName",
                        "src": "20935:6:34"
                      }
                    ],
                    "id": 7317,
                    "name": "VariableDeclaration",
                    "src": "20935:23:34"
                  }
                ],
                "id": 7318,
                "name": "ParameterList",
                "src": "20900:59:34"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 7321,
                "name": "ParameterList",
                "src": "20979:0:34"
              },
              {
                "attributes": {
                  "arguments": null
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 6243,
                      "type": "modifier ()",
                      "value": "onlyAdmin"
                    },
                    "id": 7319,
                    "name": "Identifier",
                    "src": "20969:9:34"
                  }
                ],
                "id": 7320,
                "name": "ModifierInvocation",
                "src": "20969:9:34"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            7323
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "mutability": "mutable",
                              "name": "i",
                              "overrides": null,
                              "scope": 7343,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 7322,
                                "name": "ElementaryTypeName",
                                "src": "20994:7:34"
                              }
                            ],
                            "id": 7323,
                            "name": "VariableDeclaration",
                            "src": "20994:9:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 7324,
                            "name": "Literal",
                            "src": "21006:1:34"
                          }
                        ],
                        "id": 7325,
                        "name": "VariableDeclarationStatement",
                        "src": "20994:13:34"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 7323,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 7326,
                            "name": "Identifier",
                            "src": "21009:1:34"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "length",
                              "referencedDeclaration": null,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7314,
                                  "type": "address payable[] calldata",
                                  "value": "addrs"
                                },
                                "id": 7327,
                                "name": "Identifier",
                                "src": "21013:5:34"
                              }
                            ],
                            "id": 7328,
                            "name": "MemberAccess",
                            "src": "21013:12:34"
                          }
                        ],
                        "id": 7329,
                        "name": "BinaryOperation",
                        "src": "21009:16:34"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 7323,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 7330,
                                "name": "Identifier",
                                "src": "21027:1:34"
                              }
                            ],
                            "id": 7331,
                            "name": "UnaryOperation",
                            "src": "21027:3:34"
                          }
                        ],
                        "id": 7332,
                        "name": "ExpressionStatement",
                        "src": "21027:3:34"
                      },
                      {
                        "children": [
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "tryCall": false,
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "transfer",
                                      "referencedDeclaration": null,
                                      "type": "function (uint256)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "address payable"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 7314,
                                              "type": "address payable[] calldata",
                                              "value": "addrs"
                                            },
                                            "id": 7333,
                                            "name": "Identifier",
                                            "src": "21046:5:34"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 7323,
                                              "type": "uint256",
                                              "value": "i"
                                            },
                                            "id": 7334,
                                            "name": "Identifier",
                                            "src": "21052:1:34"
                                          }
                                        ],
                                        "id": 7335,
                                        "name": "IndexAccess",
                                        "src": "21046:8:34"
                                      }
                                    ],
                                    "id": 7336,
                                    "name": "MemberAccess",
                                    "src": "21046:17:34"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "type": "uint256"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 7317,
                                          "type": "uint256[] calldata",
                                          "value": "amounts"
                                        },
                                        "id": 7337,
                                        "name": "Identifier",
                                        "src": "21064:7:34"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 7323,
                                          "type": "uint256",
                                          "value": "i"
                                        },
                                        "id": 7338,
                                        "name": "Identifier",
                                        "src": "21072:1:34"
                                      }
                                    ],
                                    "id": 7339,
                                    "name": "IndexAccess",
                                    "src": "21064:10:34"
                                  }
                                ],
                                "id": 7340,
                                "name": "FunctionCall",
                                "src": "21046:29:34"
                              }
                            ],
                            "id": 7341,
                            "name": "ExpressionStatement",
                            "src": "21046:29:34"
                          }
                        ],
                        "id": 7342,
                        "name": "Block",
                        "src": "21032:54:34"
                      }
                    ],
                    "id": 7343,
                    "name": "ForStatement",
                    "src": "20989:97:34"
                  }
                ],
                "id": 7344,
                "name": "Block",
                "src": "20979:113:34"
              }
            ],
            "id": 7345,
            "name": "FunctionDefinition",
            "src": "20878:214:34"
          }
        ],
        "id": 7346,
        "name": "ContractDefinition",
        "src": "494:20600:34"
      }
    ],
    "id": 7347,
    "name": "SourceUnit",
    "src": "42:21053:34"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.4.3",
  "updatedAt": "2021-11-29T02:07:34.228Z",
  "devdoc": {
    "author": "ChainSafe Systems.",
    "kind": "dev",
    "methods": {
      "_hasVotedOnProposal(uint72,bytes32,address)": {
        "params": {
          "dataHash": "Hash of data to be provided when deposit proposal is executed.",
          "destNonce": "destinationDomainID + depositNonce of the proposal.",
          "relayer": "Address to check."
        }
      },
      "adminAddRelayer(address)": {
        "params": {
          "relayerAddress": "Address of relayer to be added."
        }
      },
      "adminChangeFee(uint256)": {
        "params": {
          "newFee": "Value {_fee} will be updated to."
        }
      },
      "adminChangeRelayerThreshold(uint256)": {
        "params": {
          "newThreshold": "Value {_relayerThreshold} will be changed to."
        }
      },
      "adminRemoveRelayer(address)": {
        "params": {
          "relayerAddress": "Address of relayer to be removed."
        }
      },
      "adminSetBurnable(address,address)": {
        "params": {
          "handlerAddress": "Address of handler resource will be set for.",
          "tokenAddress": "Address of contract to be called when a deposit is made and a deposited is executed."
        }
      },
      "adminSetDepositNonce(uint8,uint64)": {
        "params": {
          "domainID": "Domain ID for increasing nonce.",
          "nonce": "The nonce value to be set."
        }
      },
      "adminSetGenericResource(address,bytes32,address,bytes4,uint256,bytes4)": {
        "params": {
          "contractAddress": "Address of contract to be called when a deposit is made and a deposited is executed.",
          "handlerAddress": "Address of handler resource will be set for.",
          "resourceID": "ResourceID to be used when making deposits."
        }
      },
      "adminSetResource(address,bytes32,address)": {
        "params": {
          "handlerAddress": "Address of handler resource will be set for.",
          "resourceID": "ResourceID to be used when making deposits.",
          "tokenAddress": "Address of contract to be called when a deposit is made and a deposited is executed."
        }
      },
      "adminWithdraw(address,bytes)": {
        "params": {
          "data": "ABI-encoded withdrawal params relevant to the specified handler.",
          "handlerAddress": "Address of handler to withdraw from."
        }
      },
      "cancelProposal(uint8,uint64,bytes32)": {
        "params": {
          "dataHash": "Hash of data originally provided when deposit was made.",
          "depositNonce": "ID of deposited generated by origin Bridge contract.",
          "domainID": "ID of chain deposit originated from."
        }
      },
      "constructor": {
        "params": {
          "domainID": "ID of chain the Bridge contract exists on.",
          "initialRelayerThreshold": "Number of votes needed for a deposit proposal to be considered passed.",
          "initialRelayers": "Addresses that should be initially granted the relayer role."
        }
      },
      "deposit(uint8,bytes32,bytes)": {
        "params": {
          "data": "Additional data to be passed to specified handler.",
          "destinationDomainID": "ID of chain deposit will be bridged to.",
          "resourceID": "ResourceID used to find address of handler to be used for deposit."
        }
      },
      "executeProposal(uint8,uint64,bytes,bytes32,bool)": {
        "params": {
          "data": "Data originally provided when deposit was made.",
          "depositNonce": "ID of deposited generated by origin Bridge contract.",
          "domainID": "ID of chain deposit originated from.",
          "resourceID": "ResourceID to be used when making deposits.",
          "revertOnFail": "Decision if the transaction should be reverted in case of handler's executeProposal is reverted or not."
        }
      },
      "getProposal(uint8,uint64,bytes32)": {
        "params": {
          "dataHash": "Hash of data to be provided when deposit proposal is executed.",
          "depositNonce": "ID of proposal generated by proposal's origin Bridge contract.",
          "originDomainID": "Chain ID deposit originated from."
        },
        "returns": {
          "_0": "Proposal which consists of: - _dataHash Hash of data to be provided when deposit proposal is executed. - _yesVotes Number of votes in favor of proposal. - _noVotes Number of votes against proposal. - _status Current status of proposal."
        }
      },
      "getRoleAdmin(bytes32)": {
        "details": "Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."
      },
      "getRoleMember(bytes32,uint256)": {
        "details": "Returns one of the accounts that have `role`. `index` must be a value between 0 and {getRoleMemberCount}, non-inclusive. Role bearers are not sorted in any particular way, and their ordering may change at any point. WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure you perform all queries on the same block. See the following https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post] for more information."
      },
      "getRoleMemberCount(bytes32)": {
        "details": "Returns the number of accounts that have `role`. Can be used together with {getRoleMember} to enumerate all bearers of a role."
      },
      "getRoleMemberIndex(bytes32,address)": {
        "details": "Returns the index of the account that have `role`."
      },
      "grantRole(bytes32,address)": {
        "details": "Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role."
      },
      "hasRole(bytes32,address)": {
        "details": "Returns `true` if `account` has been granted `role`."
      },
      "isRelayer(address)": {
        "params": {
          "relayer": "Address to check."
        }
      },
      "paused()": {
        "details": "Returns true if the contract is paused, and false otherwise."
      },
      "renounceAdmin(address)": {
        "params": {
          "newAdmin": "Address that admin role will be granted to."
        }
      },
      "renounceRole(bytes32,address)": {
        "details": "Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `account`."
      },
      "revokeRole(bytes32,address)": {
        "details": "Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role."
      },
      "transferFunds(address[],uint256[])": {
        "params": {
          "addrs": "Array of addresses to transfer {amounts} to.",
          "amounts": "Array of amonuts to transfer to {addrs}."
        }
      },
      "voteProposal(uint8,uint64,bytes32,bytes)": {
        "params": {
          "data": "Data originally provided when deposit was made.",
          "depositNonce": "ID of deposited generated by origin Bridge contract.",
          "domainID": "ID of chain deposit originated from."
        }
      }
    },
    "title": "Facilitates deposits, creation and voting of deposit proposals, and deposit executions.",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {
      "_hasVotedOnProposal(uint72,bytes32,address)": {
        "notice": "Returns true if {relayer} has voted on {destNonce} {dataHash} proposal.Naming left unchanged for backward compatibility."
      },
      "_totalRelayers()": {
        "notice": "Returns total relayers number.Added for backwards compatibility."
      },
      "adminAddRelayer(address)": {
        "notice": "Grants {relayerAddress} the relayer role.Only callable by an address that currently has the admin role, which is checked in grantRole().Emits {RelayerAdded} event."
      },
      "adminChangeFee(uint256)": {
        "notice": "Changes deposit fee.Only callable by admin."
      },
      "adminChangeRelayerThreshold(uint256)": {
        "notice": "Modifies the number of votes required for a proposal to be considered passed.Only callable by an address that currently has the admin role.Emits {RelayerThresholdChanged} event."
      },
      "adminPauseTransfers()": {
        "notice": "Pauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role."
      },
      "adminRemoveRelayer(address)": {
        "notice": "Removes relayer role for {relayerAddress}.Only callable by an address that currently has the admin role, which is checked in revokeRole().Emits {RelayerRemoved} event."
      },
      "adminSetBurnable(address,address)": {
        "notice": "Sets a resource as burnable for handler contracts that use the IERCHandler interface.Only callable by an address that currently has the admin role."
      },
      "adminSetDepositNonce(uint8,uint64)": {
        "notice": "Sets the nonce for the specific domainID.Only callable by an address that currently has the admin role."
      },
      "adminSetGenericResource(address,bytes32,address,bytes4,uint256,bytes4)": {
        "notice": "Sets a new resource for handler contracts that use the IGenericHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role."
      },
      "adminSetResource(address,bytes32,address)": {
        "notice": "Sets a new resource for handler contracts that use the IERCHandler interface, and maps the {handlerAddress} to {resourceID} in {_resourceIDToHandlerAddress}.Only callable by an address that currently has the admin role."
      },
      "adminUnpauseTransfers()": {
        "notice": "Unpauses deposits, proposal creation and voting, and deposit executions.Only callable by an address that currently has the admin role."
      },
      "adminWithdraw(address,bytes)": {
        "notice": "Used to manually withdraw funds from ERC safes."
      },
      "cancelProposal(uint8,uint64,bytes32)": {
        "notice": "Cancels a deposit proposal that has not been executed yet.Only callable by relayers when Bridge is not paused.Proposal must be past expiry threshold.Emits {ProposalEvent} event with status {Cancelled}."
      },
      "constructor": "Initializes Bridge, creates and grants {msg.sender} the admin role, creates and grants {initialRelayers} the relayer role.",
      "deposit(uint8,bytes32,bytes)": {
        "notice": "Initiates a transfer using a specified handler contract.Only callable when Bridge is not paused.Emits {Deposit} event with all necessary parameters and a handler response. - ERC20Handler: responds with an empty data. - ERC721Handler: responds with the deposited token metadata acquired by calling a tokenURI method in the token contract. - GenericHandler: responds with the raw bytes returned from the call to the target contract."
      },
      "executeProposal(uint8,uint64,bytes,bytes32,bool)": {
        "notice": "Executes a deposit proposal that is considered passed using a specified handler contract.Only callable by relayers when Bridge is not paused.Proposal must have Passed status.Hash of {data} must equal proposal's {dataHash}.Emits {ProposalEvent} event with status {Executed}.Emits {FailedExecution} event with the failed reason."
      },
      "getProposal(uint8,uint64,bytes32)": {
        "notice": "Returns a proposal."
      },
      "isRelayer(address)": {
        "notice": "Returns true if {relayer} has the relayer role."
      },
      "renounceAdmin(address)": {
        "notice": "Removes admin role from {msg.sender} and grants it to {newAdmin}.Only callable by an address that currently has the admin role."
      },
      "transferFunds(address[],uint256[])": {
        "notice": "Transfers eth in the contract to the specified addresses. The parameters addrs and amounts are mapped 1-1. This means that the address at index 0 for addrs will receive the amount (in WEI) from amounts at index 0."
      },
      "voteProposal(uint8,uint64,bytes32,bytes)": {
        "notice": "When called, {msg.sender} will be marked as voting in favor of proposal.Only callable by relayers when Bridge is not paused.Proposal must not have already been passed or executed.{msg.sender} must not have already voted on proposal.Emits {ProposalEvent} event with status indicating the proposal status.Emits {ProposalVote} event."
      }
    },
    "version": 1
  }
}