{
  "contractName": "ValidatorRegistryProxy",
  "abi": [
    {
      "inputs": [
        {
          "name": "_registry",
          "type": "address"
        },
        {
          "name": "auth",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor",
      "signature": "constructor"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "implementation",
          "type": "address"
        }
      ],
      "name": "setImplementation",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xd784d426"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "applicationPeriod",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xd07e98b5"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "commitPeriod",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xf713b052"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "challengePeriod",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xf3f480d9"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "exitPeriod",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x753d7445"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "rewardPeriod",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xe88dc5b7"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "minimumBalance",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xb9d1d49b"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "stakeholderCut",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x8ea17b2d"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "treasury",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x61d027b3"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "voting",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xfce1ccca"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xfc0c546a"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "validators",
      "outputs": [
        {
          "name": "",
          "type": "bytes32[]"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0xca1e7819"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_pubKey",
          "type": "bytes32"
        }
      ],
      "name": "getListing",
      "outputs": [
        {
          "name": "status",
          "type": "uint8"
        },
        {
          "name": "applicationBlock",
          "type": "uint256"
        },
        {
          "name": "tendermintPublicKey",
          "type": "bytes32"
        },
        {
          "name": "owner",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function",
      "signature": "0x175c0d16"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_pubKey",
          "type": "bytes32"
        },
        {
          "name": "_tokensToStake",
          "type": "uint256"
        },
        {
          "name": "_rewardRate",
          "type": "int256"
        }
      ],
      "name": "registerListing",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xade00a17"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_pubKey",
          "type": "bytes32"
        }
      ],
      "name": "challengeListing",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x9b92ec10"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_pubKey",
          "type": "bytes32"
        }
      ],
      "name": "resolveChallenge",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0xd32c943a"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "challengeId",
          "type": "uint256"
        }
      ],
      "name": "claimWinnings",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x677bd9ff"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_pubKey",
          "type": "bytes32"
        }
      ],
      "name": "claimRewards",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x7790ddc6"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_pubKey",
          "type": "bytes32"
        }
      ],
      "name": "confirmListing",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x54a4a865"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_pubKey",
          "type": "bytes32"
        }
      ],
      "name": "initExit",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x07b99366"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_pubKey",
          "type": "bytes32"
        }
      ],
      "name": "finalizeExit",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function",
      "signature": "0x0960db7c"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50604051604080610f088339810180604052604081101561003057600080fd5b50805160209091015160008054600160a060020a03928316600160a060020a03199182161790915560018054929093169116179055610e94806100746000396000f3fe60806040526004361061011c5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166307b9936681146101215780630960db7c1461014d578063175c0d161461017757806354a4a865146101e257806361d027b31461020c578063677bd9ff1461023d578063753d7445146102675780637790ddc61461028e5780638ea17b2d146102b85780639b92ec10146102cd578063ade00a17146102f7578063b9d1d49b1461032d578063ca1e781914610342578063d07e98b5146103a7578063d32c943a146103bc578063d784d426146103e6578063e88dc5b714610419578063f3f480d91461042e578063f713b05214610443578063fc0c546a14610458578063fce1ccca1461046d575b600080fd5b34801561012d57600080fd5b5061014b6004803603602081101561014457600080fd5b5035610482565b005b34801561015957600080fd5b5061014b6004803603602081101561017057600080fd5b5035610509565b34801561018357600080fd5b506101a16004803603602081101561019a57600080fd5b5035610575565b604051808560048111156101b157fe5b60ff168152602081019490945250604080840192909252600160a060020a0316606083015251908190036080019150f35b3480156101ee57600080fd5b5061014b6004803603602081101561020557600080fd5b503561062c565b34801561021857600080fd5b50610221610698565b60408051600160a060020a039092168252519081900360200190f35b34801561024957600080fd5b5061014b6004803603602081101561026057600080fd5b5035610727565b34801561027357600080fd5b5061027c610793565b60408051918252519081900360200190f35b34801561029a57600080fd5b5061014b600480360360208110156102b157600080fd5b50356107f1565b3480156102c457600080fd5b5061027c610857565b3480156102d957600080fd5b5061014b600480360360208110156102f057600080fd5b50356108b5565b34801561030357600080fd5b5061014b6004803603606081101561031a57600080fd5b5080359060208101359060400135610921565b34801561033957600080fd5b5061027c6109b8565b34801561034e57600080fd5b50610357610a16565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561039357818101518382015260200161037b565b505050509050019250505060405180910390f35b3480156103b357600080fd5b5061027c610b04565b3480156103c857600080fd5b5061014b600480360360208110156103df57600080fd5b5035610b62565b3480156103f257600080fd5b5061014b6004803603602081101561040957600080fd5b5035600160a060020a0316610bc8565b34801561042557600080fd5b5061027c610c92565b34801561043a57600080fd5b5061027c610cf0565b34801561044f57600080fd5b5061027c610d4e565b34801561046457600080fd5b50610221610dac565b34801561047957600080fd5b50610221610e0a565b600154604080517f878432a6000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a039092169163878432a69160448082019260009290919082900301818387803b1580156104ee57600080fd5b505af1158015610502573d6000803e3d6000fd5b5050505050565b600154604080517fff8f3e62000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a039092169163ff8f3e629160448082019260009290919082900301818387803b1580156104ee57600080fd5b600154604080517f175c0d16000000000000000000000000000000000000000000000000000000008152600481018490529051600092839283928392600160a060020a03169163175c0d16916024808301926080929190829003018186803b1580156105e057600080fd5b505afa1580156105f4573d6000803e3d6000fd5b505050506040513d608081101561060a57600080fd5b5080516020820151604083015160609093015191989097509195509350915050565b600154604080517f77a2b56f000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a03909216916377a2b56f9160448082019260009290919082900301818387803b1580156104ee57600080fd5b600154604080517f61d027b30000000000000000000000000000000000000000000000000000000081529051600092600160a060020a0316916361d027b3916004808301926020929190829003018186803b1580156106f657600080fd5b505afa15801561070a573d6000803e3d6000fd5b505050506040513d602081101561072057600080fd5b5051905090565b600154604080517f183085c0000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a039092169163183085c09160448082019260009290919082900301818387803b1580156104ee57600080fd5b600154604080517f753d74450000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163753d7445916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517f7790ddc6000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a0390921691637790ddc69160248082019260009290919082900301818387803b1580156104ee57600080fd5b600154604080517f8ea17b2d0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691638ea17b2d916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517fa0b3030f000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a039092169163a0b3030f9160448082019260009290919082900301818387803b1580156104ee57600080fd5b600154604080517f858e48fe0000000000000000000000000000000000000000000000000000000081523360048201526024810186905260448101859052606481018490529051600160a060020a039092169163858e48fe9160848082019260009290919082900301818387803b15801561099b57600080fd5b505af11580156109af573d6000803e3d6000fd5b50505050505050565b600154604080517fb9d1d49b0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163b9d1d49b916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517fca1e78190000000000000000000000000000000000000000000000000000000081529051606092600160a060020a03169163ca1e7819916004808301926000929190829003018186803b158015610a7457600080fd5b505afa158015610a88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610ab157600080fd5b810190808051640100000000811115610ac957600080fd5b82016020810184811115610adc57600080fd5b8151856020820283011164010000000082111715610af957600080fd5b509094505050505090565b600154604080517fd07e98b50000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163d07e98b5916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517fd32c943a000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a039092169163d32c943a9160248082019260009290919082900301818387803b1580156104ee57600080fd5b600054604080517fced3fb9c0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163ced3fb9c91602480820192602092909190829003018186803b158015610c2c57600080fd5b505afa158015610c40573d6000803e3d6000fd5b505050506040513d6020811015610c5657600080fd5b50511515610c6357600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154604080517fe88dc5b70000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163e88dc5b7916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517ff3f480d90000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163f3f480d9916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517ff713b0520000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163f713b052916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517ffc0c546a0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163fc0c546a916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517ffce1ccca0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163fce1ccca916004808301926020929190829003018186803b1580156106f657600080fdfea165627a7a723058206498308b9a82504e4a6f3e002e8035795977cff8845137c565a8f71282500dbc0029",
  "deployedBytecode": "0x60806040526004361061011c5763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166307b9936681146101215780630960db7c1461014d578063175c0d161461017757806354a4a865146101e257806361d027b31461020c578063677bd9ff1461023d578063753d7445146102675780637790ddc61461028e5780638ea17b2d146102b85780639b92ec10146102cd578063ade00a17146102f7578063b9d1d49b1461032d578063ca1e781914610342578063d07e98b5146103a7578063d32c943a146103bc578063d784d426146103e6578063e88dc5b714610419578063f3f480d91461042e578063f713b05214610443578063fc0c546a14610458578063fce1ccca1461046d575b600080fd5b34801561012d57600080fd5b5061014b6004803603602081101561014457600080fd5b5035610482565b005b34801561015957600080fd5b5061014b6004803603602081101561017057600080fd5b5035610509565b34801561018357600080fd5b506101a16004803603602081101561019a57600080fd5b5035610575565b604051808560048111156101b157fe5b60ff168152602081019490945250604080840192909252600160a060020a0316606083015251908190036080019150f35b3480156101ee57600080fd5b5061014b6004803603602081101561020557600080fd5b503561062c565b34801561021857600080fd5b50610221610698565b60408051600160a060020a039092168252519081900360200190f35b34801561024957600080fd5b5061014b6004803603602081101561026057600080fd5b5035610727565b34801561027357600080fd5b5061027c610793565b60408051918252519081900360200190f35b34801561029a57600080fd5b5061014b600480360360208110156102b157600080fd5b50356107f1565b3480156102c457600080fd5b5061027c610857565b3480156102d957600080fd5b5061014b600480360360208110156102f057600080fd5b50356108b5565b34801561030357600080fd5b5061014b6004803603606081101561031a57600080fd5b5080359060208101359060400135610921565b34801561033957600080fd5b5061027c6109b8565b34801561034e57600080fd5b50610357610a16565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561039357818101518382015260200161037b565b505050509050019250505060405180910390f35b3480156103b357600080fd5b5061027c610b04565b3480156103c857600080fd5b5061014b600480360360208110156103df57600080fd5b5035610b62565b3480156103f257600080fd5b5061014b6004803603602081101561040957600080fd5b5035600160a060020a0316610bc8565b34801561042557600080fd5b5061027c610c92565b34801561043a57600080fd5b5061027c610cf0565b34801561044f57600080fd5b5061027c610d4e565b34801561046457600080fd5b50610221610dac565b34801561047957600080fd5b50610221610e0a565b600154604080517f878432a6000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a039092169163878432a69160448082019260009290919082900301818387803b1580156104ee57600080fd5b505af1158015610502573d6000803e3d6000fd5b5050505050565b600154604080517fff8f3e62000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a039092169163ff8f3e629160448082019260009290919082900301818387803b1580156104ee57600080fd5b600154604080517f175c0d16000000000000000000000000000000000000000000000000000000008152600481018490529051600092839283928392600160a060020a03169163175c0d16916024808301926080929190829003018186803b1580156105e057600080fd5b505afa1580156105f4573d6000803e3d6000fd5b505050506040513d608081101561060a57600080fd5b5080516020820151604083015160609093015191989097509195509350915050565b600154604080517f77a2b56f000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a03909216916377a2b56f9160448082019260009290919082900301818387803b1580156104ee57600080fd5b600154604080517f61d027b30000000000000000000000000000000000000000000000000000000081529051600092600160a060020a0316916361d027b3916004808301926020929190829003018186803b1580156106f657600080fd5b505afa15801561070a573d6000803e3d6000fd5b505050506040513d602081101561072057600080fd5b5051905090565b600154604080517f183085c0000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a039092169163183085c09160448082019260009290919082900301818387803b1580156104ee57600080fd5b600154604080517f753d74450000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163753d7445916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517f7790ddc6000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a0390921691637790ddc69160248082019260009290919082900301818387803b1580156104ee57600080fd5b600154604080517f8ea17b2d0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a031691638ea17b2d916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517fa0b3030f000000000000000000000000000000000000000000000000000000008152336004820152602481018490529051600160a060020a039092169163a0b3030f9160448082019260009290919082900301818387803b1580156104ee57600080fd5b600154604080517f858e48fe0000000000000000000000000000000000000000000000000000000081523360048201526024810186905260448101859052606481018490529051600160a060020a039092169163858e48fe9160848082019260009290919082900301818387803b15801561099b57600080fd5b505af11580156109af573d6000803e3d6000fd5b50505050505050565b600154604080517fb9d1d49b0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163b9d1d49b916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517fca1e78190000000000000000000000000000000000000000000000000000000081529051606092600160a060020a03169163ca1e7819916004808301926000929190829003018186803b158015610a7457600080fd5b505afa158015610a88573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015610ab157600080fd5b810190808051640100000000811115610ac957600080fd5b82016020810184811115610adc57600080fd5b8151856020820283011164010000000082111715610af957600080fd5b509094505050505090565b600154604080517fd07e98b50000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163d07e98b5916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517fd32c943a000000000000000000000000000000000000000000000000000000008152600481018490529051600160a060020a039092169163d32c943a9160248082019260009290919082900301818387803b1580156104ee57600080fd5b600054604080517fced3fb9c0000000000000000000000000000000000000000000000000000000081523360048201529051600160a060020a039092169163ced3fb9c91602480820192602092909190829003018186803b158015610c2c57600080fd5b505afa158015610c40573d6000803e3d6000fd5b505050506040513d6020811015610c5657600080fd5b50511515610c6357600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600154604080517fe88dc5b70000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163e88dc5b7916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517ff3f480d90000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163f3f480d9916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517ff713b0520000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163f713b052916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517ffc0c546a0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163fc0c546a916004808301926020929190829003018186803b1580156106f657600080fd5b600154604080517ffce1ccca0000000000000000000000000000000000000000000000000000000081529051600092600160a060020a03169163fce1ccca916004808301926020929190829003018186803b1580156106f657600080fdfea165627a7a723058206498308b9a82504e4a6f3e002e8035795977cff8845137c565a8f71282500dbc0029",
  "sourceMap": "164:7657:5:-;;;693:128;8:9:-1;5:2;;;30:1;27;20:12;5:2;693:128:5;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;693:128:5;;;;;;;557:17:1;:67;;-1:-1:-1;;;;;557:67:1;;;-1:-1:-1;;;;;;557:67:1;;;;;;;;774:40:5;;;;;;;;;;;164:7657;;;;;;",
  "deployedSourceMap": "164:7657:5:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7396:99;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7396:99:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7396:99:5;;;;;7712:107;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7712:107:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7712:107:5;;;4744:225;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4744:225:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4744:225:5;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4744:225:5;;;;;;;;-1:-1:-1;;;;;4744:225:5;;;;;;;;;;;;;-1:-1:-1;4744:225:5;7076:111;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7076:111:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7076:111:5;;;3406:95;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3406:95:5;;;;;;;;-1:-1:-1;;;;;3406:95:5;;;;;;;;;;;;;;6431:112;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6431:112:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6431:112:5;;;2249:94;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2249:94:5;;;;;;;;;;;;;;;;;;;;6762:93;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6762:93:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6762:93:5;;;3114:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3114:102:5;;;;5776:115;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5776:115:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5776:115:5;;;5385:180;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5385:180:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5385:180:5;;;;;;;;;;;;;2810:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2810:102:5;;;;4279:108;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4279:108:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4279:108:5;;;;;;;;;;;;;;;;;1402;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1402:108:5;;;;6116:101;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6116:101:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6116:101:5;;;1076:133;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1076:133:5;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1076:133:5;-1:-1:-1;;;;;1076:133:5;;;2521:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2521:98:5;;;;1973:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1973:104:5;;;;1688:98;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1688:98:5;;;;3970:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3970:89:5;;;;3686:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3686:91:5;;;;7396:99;7450:8;;:38;;;;;;7468:10;7450:38;;;;;;;;;;;;-1:-1:-1;;;;;7450:8:5;;;;:17;;:38;;;;;:8;;:38;;;;;;;;:8;;:38;;;5:2:-1;;;;30:1;27;20:12;5:2;7450:38:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7450:38:5;;;;7396:99;:::o;7712:107::-;7770:8;;:42;;;;;;7792:10;7770:42;;;;;;;;;;;;-1:-1:-1;;;;;7770:8:5;;;;:21;;:42;;;;;:8;;:42;;;;;;;;:8;;:42;;;5:2:-1;;;;30:1;27;20:12;4744:225:5;4934:8;;:28;;;;;;;;;;;;;;4812:32;;;;;;;;-1:-1:-1;;;;;4934:8:5;;:19;;:28;;;;;;;;;;;;;;:8;:28;;;5:2:-1;;;;30:1;27;20:12;5:2;4934:28:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4934:28:5;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4934:28:5;;;;;;;;;;;;;;;;;;;-1:-1:-1;4934:28:5;;-1:-1:-1;4934:28:5;-1:-1:-1;4744:225:5;-1:-1:-1;;4744:225:5:o;7076:111::-;7136:8;;:44;;;;;;7160:10;7136:44;;;;;;;;;;;;-1:-1:-1;;;;;7136:8:5;;;;:23;;:44;;;;;:8;;:44;;;;;;;;:8;;:44;;;5:2:-1;;;;30:1;27;20:12;3406:95:5;3475:8;;:19;;;;;;;;3449:7;;-1:-1:-1;;;;;3475:8:5;;:17;;:19;;;;;;;;;;;;;;:8;:19;;;5:2:-1;;;;30:1;27;20:12;5:2;3475:19:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3475:19:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3475:19:5;;-1:-1:-1;3406:95:5;:::o;6431:112::-;6489:8;;:47;;;;;;6512:10;6489:47;;;;;;;;;;;;-1:-1:-1;;;;;6489:8:5;;;;:22;;:47;;;;;:8;;:47;;;;;;;;:8;;:47;;;5:2:-1;;;;30:1;27;20:12;2249:94:5;2315:8;;:21;;;;;;;;2292:4;;-1:-1:-1;;;;;2315:8:5;;:19;;:21;;;;;;;;;;;;;;:8;:21;;;5:2:-1;;;;30:1;27;20:12;6762:93:5;6818:8;;:30;;;;;;;;;;;;;;-1:-1:-1;;;;;6818:8:5;;;;:21;;:30;;;;;:8;;:30;;;;;;;;:8;;:30;;;5:2:-1;;;;30:1;27;20:12;3114:102:5;3184:8;;:25;;;;;;;;3161:4;;-1:-1:-1;;;;;3184:8:5;;:23;;:25;;;;;;;;;;;;;;:8;:25;;;5:2:-1;;;;30:1;27;20:12;5776:115:5;5838:8;;:46;;;;;;5864:10;5838:46;;;;;;;;;;;;-1:-1:-1;;;;;5838:8:5;;;;:25;;:46;;;;;:8;;:46;;;;;;;;:8;;:46;;;5:2:-1;;;;30:1;27;20:12;5385:180:5;5484:8;;:74;;;;;;5509:10;5484:74;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5484:8:5;;;;:24;;:74;;;;;:8;;:74;;;;;;;;:8;;:74;;;5:2:-1;;;;30:1;27;20:12;5:2;5484:74:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5484:74:5;;;;5385:180;;;:::o;2810:102::-;2880:8;;:25;;;;;;;;2857:4;;-1:-1:-1;;;;;2880:8:5;;:23;;:25;;;;;;;;;;;;;;:8;:25;;;5:2:-1;;;;30:1;27;20:12;4279:108:5;4359:8;;:21;;;;;;;;4324:16;;-1:-1:-1;;;;;4359:8:5;;:19;;:21;;;;;:8;;:21;;;;;;;:8;:21;;;5:2:-1;;;;30:1;27;20:12;5:2;4359:21:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4359:21:5;;;;;;39:16:-1;36:1;17:17;2:54;101:4;4359:21:5;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;4359:21:5;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;-1:-1;4359:21:5;;-1:-1:-1;;;;;4279:108:5;:::o;1402:::-;1475:8;;:28;;;;;;;;1452:4;;-1:-1:-1;;;;;1475:8:5;;:26;;:28;;;;;;;;;;;;;;:8;:28;;;5:2:-1;;;;30:1;27;20:12;6116:101:5;6176:8;;:34;;;;;;;;;;;;;;-1:-1:-1;;;;;6176:8:5;;;;:25;;:34;;;;;:8;;:34;;;;;;;;:8;;:34;;;5:2:-1;;;;30:1;27;20:12;1076:133:5;770:17:1;;:49;;;;;;808:10;770:49;;;;;;-1:-1:-1;;;;;770:17:1;;;;:37;;:49;;;;;;;;;;;;;;;:17;:49;;;5:2:-1;;;;30:1;27;20:12;5:2;770:49:1;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;770:49:1;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;770:49:1;762:58;;;;;;;;1157:8:5;:45;;-1:-1:-1;;1157:45:5;-1:-1:-1;;;;;1157:45:5;;;;;;;;;;1076:133::o;2521:98::-;2589:8;;:23;;;;;;;;2566:4;;-1:-1:-1;;;;;2589:8:5;;:21;;:23;;;;;;;;;;;;;;:8;:23;;;5:2:-1;;;;30:1;27;20:12;1973:104:5;2044:8;;:26;;;;;;;;2021:4;;-1:-1:-1;;;;;2044:8:5;;:24;;:26;;;;;;;;;;;;;;:8;:26;;;5:2:-1;;;;30:1;27;20:12;1688:98:5;1756:8;;:23;;;;;;;;1733:4;;-1:-1:-1;;;;;1756:8:5;;:21;;:23;;;;;;;;;;;;;;:8;:23;;;5:2:-1;;;;30:1;27;20:12;3970:89:5;4036:8;;:16;;;;;;;;4010:7;;-1:-1:-1;;;;;4036:8:5;;:14;;:16;;;;;;;;;;;;;;:8;:16;;;5:2:-1;;;;30:1;27;20:12;3686:91:5;3753:8;;:17;;;;;;;;3727:7;;-1:-1:-1;;;;;3753:8:5;;:15;;:17;;;;;;;;;;;;;;:8;:17;;;5:2:-1;;;;30:1;27;20:12",
  "source": "pragma solidity ^0.5.0;\n\nimport \"../validator/IValidatorRegistry.sol\";\nimport \"../base/Authorizable.sol\";\n\n/** @title ValidatorRegistryProxy\n    @author Freydal\n*/\ncontract ValidatorRegistryProxy is Authorizable {\n\n    IValidatorRegistry registry;\n\n    /** @dev Creates a Proxy for a ValidatorRegistry. Accepts an initial implementation that can be overwritten if a replacement is deployed.\n        @notice Creates a Proxy for a ValidatorRegistry. Accepts an initial implementation that can be overwritten if a replacement is deployed.\n        @param _registry Current deployed address for ValidatorRegistry implementation.\n        @param auth AuthorizedAddresses deployed address.\n    */\n    constructor(address _registry, address auth) Authorizable(auth) public {\n        registry = IValidatorRegistry(_registry);\n    }\n\n    /** @dev Set a new ValidatorRegistry if a replacement is deployed.\n        @notice Set a new ValidatorRegistry if a replacement is deployed.\n        @param implementation Deployed address for replacement ValidatorRegistry implementation.\n    */\n    function setImplementation(address implementation) isAuthorized public {\n        registry = IValidatorRegistry(implementation);\n    }\n\n    /** @dev Reads the current registries applicationPeriod.\n        @notice Reads the current registries applicationPeriod.\n        @return Length of applicationPeriod in blocks.\n    */\n    function applicationPeriod() public view returns (uint) {\n        return registry.applicationPeriod();\n    }\n\n    /** @dev Reads the current registries commitPeriod.\n        @notice Reads the current registries commitPeriod.\n        @return Length of commitPeriod in blocks.\n    */\n    function commitPeriod() public view returns (uint) {\n        return registry.commitPeriod();\n    }\n\n    /** @dev Reads the current registries challengePeriod.\n        @notice Reads the current registries challengePeriod.\n        @return Length of challengePeriod in blocks.\n    */\n    function challengePeriod() public view returns (uint) {\n        return registry.challengePeriod();\n    }\n\n    /** @dev Reads the current registries exitPeriod.\n        @notice Reads the current registries exitPeriod.\n        @return Length of exitPeriod in blocks.\n    */\n    function exitPeriod() public view returns (uint) {\n        return registry.exitPeriod();\n    }\n\n    /** @dev Reads the current registries rewardPeriod.\n        @notice Reads the current registries rewardPeriod.\n        @return Length of rewardPeriod in blocks.\n    */\n    function rewardPeriod() public view returns (uint) {\n        return registry.rewardPeriod();\n    }\n\n    /** @dev Reads the current registries minimumBalance\n        @notice Reads the current registries minimumBalance\n        @return Minimum balance for listings and challenges.\n    */\n    function minimumBalance() public view returns (uint) {\n        return registry.minimumBalance();\n    }\n\n    /** @dev Reads the current registries stakeholderCut\n        @notice Reads the current registries stakeholderCut\n        @return Number of tokens the stakeholder gets after a challenge\n    */\n    function stakeholderCut() public view returns (uint) {\n        return registry.stakeholderCut();\n    }\n\n    /** @dev Reads the current registries treasury contract address.\n        @notice Reads the current registries treasury contract address.\n        @return Address of Treasury\n    */\n    function treasury() external view returns (address) {\n        return registry.treasury();\n    }\n\n    /** @dev Reads the current registries voting contract address.\n        @notice Reads the current registries voting contract address.\n        @return Address of Voting.\n    */\n    function voting() external view returns (address) {\n        return registry.voting();\n    }\n\n    /** @dev Reads the current registries token contract address.\n        @notice Reads the current registries token contract address.\n        @return Address of ERC20 token used.\n    */\n    function token() external view returns (address) {\n        return registry.token();\n    }\n\n    /** @dev Reads the current registries current validator keys.\n        @notice Reads the current registries current validator keys.\n        @return An array of bytes32 hex encoded tendermint public keys.\n    */\n    function validators() external view returns (bytes32[] memory) {\n        return registry.validators();\n    }\n\n    /** @dev Reads the current registries listing entry for provided key.\n        @notice Reads the current registries listing entry for provided key.\n        @param _pubKey hex encoded tendermint public used as listing mapping key\n        @return TODO currently returing some data that was used in the past.  will need a pass to update output\n    */\n    function getListing(bytes32 _pubKey) external view returns\n        (IValidatorRegistry.Status status, uint applicationBlock, bytes32 tendermintPublicKey, address owner)\n    {\n        return registry.getListing(_pubKey);\n    }\n\n    /** @dev Executes registerListing on the current registry.\n        @notice Executes registerListing on the current registry.\n        @param _pubKey hex encoded tendermint public used as listing mapping key\n        @param _tokensToStake The number of tokes at stake if the order is challenged\n        @param _rewardRate The rate tokens are minted or destroyed over the active listings reward periods\n    */\n    function registerListing(bytes32 _pubKey, uint _tokensToStake, int _rewardRate) external {\n        registry.registerListing(msg.sender, _pubKey, _tokensToStake, _rewardRate);\n    }\n\n    /** @dev Executes challenge on the current registry.\n        @notice Executes challenge on the current registry.\n        @param _pubKey hex encoded tendermint public used as listing mapping key\n    */\n    function challengeListing(bytes32 _pubKey) external {\n        registry.challengeListing(msg.sender, _pubKey);\n    }\n\n    /** @dev Executes resolveChallenge on the current registry.\n        @notice Executes resolveChallenge on the current registry.\n        @param _pubKey hex encoded tendermint public used as listing mapping key\n    */\n    function resolveChallenge(bytes32 _pubKey) public {\n        registry.resolveChallenge(_pubKey);\n    }\n\n    /** @dev Executes claimWinnings on the current registry.\n        @notice Executes claimWinnings on the current registry.\n        @param challengeId Id of challenge user may have tokens rewards in.\n    */\n    function claimWinnings(uint challengeId) public {\n        registry.claimWinnings(msg.sender, challengeId);\n    }\n\n    /** @dev Executes claimRewards on the current registry.\n        @notice Executes claimRewards on the current registry.\n        @param _pubKey Public key of listing that rewards need to be processed for\n    */\n    function claimRewards(bytes32 _pubKey) public {\n        registry.claimRewards(_pubKey);\n    }\n\n    /** @dev Executes confirmListing on the current registry.\n        @notice Executes confirmListing on the current registry.\n        @param _pubKey hex encoded tendermint public used as listing mapping key\n    */\n    function confirmListing(bytes32 _pubKey) external {\n        registry.confirmListing(msg.sender, _pubKey);\n    }\n\n    /** @dev Executes initExit on the current registry.\n        @notice Executes initExit on the current registry.\n        @param _pubKey hex encoded tendermint public used as listing mapping key\n    */\n    function initExit(bytes32 _pubKey) external {\n        registry.initExit(msg.sender, _pubKey);\n    }\n\n    /** @dev Executes finalizeExit on the current registry.\n        @notice Executes finalizeExit on the current registry.\n        @param _pubKey hex encoded tendermint public used as listing mapping key\n    */\n    function finalizeExit(bytes32 _pubKey) external {\n        registry.finalizeExit(msg.sender, _pubKey);\n    }\n}\n",
  "sourcePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/external/ValidatorRegistryProxy.sol",
  "ast": {
    "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/external/ValidatorRegistryProxy.sol",
    "exportedSymbols": {
      "ValidatorRegistryProxy": [
        642
      ]
    },
    "id": 643,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 360,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:5"
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/validator/IValidatorRegistry.sol",
        "file": "../validator/IValidatorRegistry.sol",
        "id": 361,
        "nodeType": "ImportDirective",
        "scope": 643,
        "sourceUnit": 1734,
        "src": "25:45:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/base/Authorizable.sol",
        "file": "../base/Authorizable.sol",
        "id": 362,
        "nodeType": "ImportDirective",
        "scope": 643,
        "sourceUnit": 103,
        "src": "71:34:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 363,
              "name": "Authorizable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 102,
              "src": "199:12:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Authorizable_$102",
                "typeString": "contract Authorizable"
              }
            },
            "id": 364,
            "nodeType": "InheritanceSpecifier",
            "src": "199:12:5"
          }
        ],
        "contractDependencies": [
          102
        ],
        "contractKind": "contract",
        "documentation": "@title ValidatorRegistryProxy\n@author Freydal",
        "fullyImplemented": true,
        "id": 642,
        "linearizedBaseContracts": [
          642,
          102
        ],
        "name": "ValidatorRegistryProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 366,
            "name": "registry",
            "nodeType": "VariableDeclaration",
            "scope": 642,
            "src": "219:27:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
              "typeString": "contract IValidatorRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 365,
              "name": "IValidatorRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1733,
              "src": "219:18:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                "typeString": "contract IValidatorRegistry"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 382,
              "nodeType": "Block",
              "src": "764:57:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 376,
                      "name": "registry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 366,
                      "src": "774:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                        "typeString": "contract IValidatorRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 378,
                          "name": "_registry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 368,
                          "src": "804:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 377,
                        "name": "IValidatorRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1733,
                        "src": "785:18:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IValidatorRegistry_$1733_$",
                          "typeString": "type(contract IValidatorRegistry)"
                        }
                      },
                      "id": 379,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "785:29:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                        "typeString": "contract IValidatorRegistry"
                      }
                    },
                    "src": "774:40:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                      "typeString": "contract IValidatorRegistry"
                    }
                  },
                  "id": 381,
                  "nodeType": "ExpressionStatement",
                  "src": "774:40:5"
                }
              ]
            },
            "documentation": "@dev Creates a Proxy for a ValidatorRegistry. Accepts an initial implementation that can be overwritten if a replacement is deployed.\n@notice Creates a Proxy for a ValidatorRegistry. Accepts an initial implementation that can be overwritten if a replacement is deployed.\n@param _registry Current deployed address for ValidatorRegistry implementation.\n@param auth AuthorizedAddresses deployed address.",
            "id": 383,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 373,
                    "name": "auth",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 370,
                    "src": "751:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 374,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 372,
                  "name": "Authorizable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 102,
                  "src": "738:12:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Authorizable_$102_$",
                    "typeString": "type(contract Authorizable)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "738:18:5"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 368,
                  "name": "_registry",
                  "nodeType": "VariableDeclaration",
                  "scope": 383,
                  "src": "705:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 367,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "705:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 370,
                  "name": "auth",
                  "nodeType": "VariableDeclaration",
                  "scope": 383,
                  "src": "724:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 369,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "724:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "704:33:5"
            },
            "returnParameters": {
              "id": 375,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "764:0:5"
            },
            "scope": 642,
            "src": "693:128:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 396,
              "nodeType": "Block",
              "src": "1147:62:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 390,
                      "name": "registry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 366,
                      "src": "1157:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                        "typeString": "contract IValidatorRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 392,
                          "name": "implementation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 385,
                          "src": "1187:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 391,
                        "name": "IValidatorRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1733,
                        "src": "1168:18:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IValidatorRegistry_$1733_$",
                          "typeString": "type(contract IValidatorRegistry)"
                        }
                      },
                      "id": 393,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1168:34:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                        "typeString": "contract IValidatorRegistry"
                      }
                    },
                    "src": "1157:45:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                      "typeString": "contract IValidatorRegistry"
                    }
                  },
                  "id": 395,
                  "nodeType": "ExpressionStatement",
                  "src": "1157:45:5"
                }
              ]
            },
            "documentation": "@dev Set a new ValidatorRegistry if a replacement is deployed.\n@notice Set a new ValidatorRegistry if a replacement is deployed.\n@param implementation Deployed address for replacement ValidatorRegistry implementation.",
            "id": 397,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 388,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 387,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 101,
                  "src": "1127:12:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1127:12:5"
              }
            ],
            "name": "setImplementation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 386,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 385,
                  "name": "implementation",
                  "nodeType": "VariableDeclaration",
                  "scope": 397,
                  "src": "1103:22:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 384,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1103:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1102:24:5"
            },
            "returnParameters": {
              "id": 389,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1147:0:5"
            },
            "scope": 642,
            "src": "1076:133:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 406,
              "nodeType": "Block",
              "src": "1458:52:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 402,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "1475:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 403,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "applicationPeriod",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1612,
                      "src": "1475:26:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 404,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1475:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 401,
                  "id": 405,
                  "nodeType": "Return",
                  "src": "1468:35:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries applicationPeriod.\n@notice Reads the current registries applicationPeriod.\n@return Length of applicationPeriod in blocks.",
            "id": 407,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "applicationPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 398,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1428:2:5"
            },
            "returnParameters": {
              "id": 401,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 400,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 407,
                  "src": "1452:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 399,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1452:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1451:6:5"
            },
            "scope": 642,
            "src": "1402:108:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 416,
              "nodeType": "Block",
              "src": "1739:47:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 412,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "1756:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 413,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "commitPeriod",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1617,
                      "src": "1756:21:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1756:23:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 411,
                  "id": 415,
                  "nodeType": "Return",
                  "src": "1749:30:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries commitPeriod.\n@notice Reads the current registries commitPeriod.\n@return Length of commitPeriod in blocks.",
            "id": 417,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "commitPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 408,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1709:2:5"
            },
            "returnParameters": {
              "id": 411,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 410,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 417,
                  "src": "1733:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 409,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1733:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1732:6:5"
            },
            "scope": 642,
            "src": "1688:98:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 426,
              "nodeType": "Block",
              "src": "2027:50:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 422,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "2044:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 423,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "challengePeriod",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1622,
                      "src": "2044:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2044:26:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 421,
                  "id": 425,
                  "nodeType": "Return",
                  "src": "2037:33:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries challengePeriod.\n@notice Reads the current registries challengePeriod.\n@return Length of challengePeriod in blocks.",
            "id": 427,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "challengePeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 418,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1997:2:5"
            },
            "returnParameters": {
              "id": 421,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 420,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 427,
                  "src": "2021:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 419,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2021:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2020:6:5"
            },
            "scope": 642,
            "src": "1973:104:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 436,
              "nodeType": "Block",
              "src": "2298:45:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 432,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "2315:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 433,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "exitPeriod",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1627,
                      "src": "2315:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 434,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2315:21:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 431,
                  "id": 435,
                  "nodeType": "Return",
                  "src": "2308:28:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries exitPeriod.\n@notice Reads the current registries exitPeriod.\n@return Length of exitPeriod in blocks.",
            "id": 437,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "exitPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 428,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2268:2:5"
            },
            "returnParameters": {
              "id": 431,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 430,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 437,
                  "src": "2292:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 429,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2292:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2291:6:5"
            },
            "scope": 642,
            "src": "2249:94:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 446,
              "nodeType": "Block",
              "src": "2572:47:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 442,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "2589:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 443,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "rewardPeriod",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1632,
                      "src": "2589:21:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 444,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2589:23:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 441,
                  "id": 445,
                  "nodeType": "Return",
                  "src": "2582:30:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries rewardPeriod.\n@notice Reads the current registries rewardPeriod.\n@return Length of rewardPeriod in blocks.",
            "id": 447,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "rewardPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 438,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2542:2:5"
            },
            "returnParameters": {
              "id": 441,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 440,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 447,
                  "src": "2566:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 439,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2566:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2565:6:5"
            },
            "scope": 642,
            "src": "2521:98:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 456,
              "nodeType": "Block",
              "src": "2863:49:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 452,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "2880:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "minimumBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1637,
                      "src": "2880:23:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 454,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2880:25:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 451,
                  "id": 455,
                  "nodeType": "Return",
                  "src": "2873:32:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries minimumBalance\n@notice Reads the current registries minimumBalance\n@return Minimum balance for listings and challenges.",
            "id": 457,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "minimumBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 448,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2833:2:5"
            },
            "returnParameters": {
              "id": 451,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 450,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 457,
                  "src": "2857:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 449,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2857:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2856:6:5"
            },
            "scope": 642,
            "src": "2810:102:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 466,
              "nodeType": "Block",
              "src": "3167:49:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 462,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "3184:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 463,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakeholderCut",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1642,
                      "src": "3184:23:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3184:25:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 461,
                  "id": 465,
                  "nodeType": "Return",
                  "src": "3177:32:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries stakeholderCut\n@notice Reads the current registries stakeholderCut\n@return Number of tokens the stakeholder gets after a challenge",
            "id": 467,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "stakeholderCut",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 458,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3137:2:5"
            },
            "returnParameters": {
              "id": 461,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 460,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 467,
                  "src": "3161:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 459,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3161:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3160:6:5"
            },
            "scope": 642,
            "src": "3114:102:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 476,
              "nodeType": "Block",
              "src": "3458:43:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 472,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "3475:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 473,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "treasury",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1647,
                      "src": "3475:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3475:19:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 471,
                  "id": 475,
                  "nodeType": "Return",
                  "src": "3468:26:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries treasury contract address.\n@notice Reads the current registries treasury contract address.\n@return Address of Treasury",
            "id": 477,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "treasury",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 468,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3423:2:5"
            },
            "returnParameters": {
              "id": 471,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 470,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 477,
                  "src": "3449:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 469,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3449:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3448:9:5"
            },
            "scope": 642,
            "src": "3406:95:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 486,
              "nodeType": "Block",
              "src": "3736:41:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 482,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "3753:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 483,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voting",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1652,
                      "src": "3753:15:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3753:17:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 481,
                  "id": 485,
                  "nodeType": "Return",
                  "src": "3746:24:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries voting contract address.\n@notice Reads the current registries voting contract address.\n@return Address of Voting.",
            "id": 487,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "voting",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 478,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3701:2:5"
            },
            "returnParameters": {
              "id": 481,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 480,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 487,
                  "src": "3727:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 479,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3727:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3726:9:5"
            },
            "scope": 642,
            "src": "3686:91:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 496,
              "nodeType": "Block",
              "src": "4019:40:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 492,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "4036:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 493,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "token",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1657,
                      "src": "4036:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4036:16:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 491,
                  "id": 495,
                  "nodeType": "Return",
                  "src": "4029:23:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries token contract address.\n@notice Reads the current registries token contract address.\n@return Address of ERC20 token used.",
            "id": 497,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "token",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 488,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3984:2:5"
            },
            "returnParameters": {
              "id": 491,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 490,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 497,
                  "src": "4010:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 489,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4010:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4009:9:5"
            },
            "scope": 642,
            "src": "3970:89:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 507,
              "nodeType": "Block",
              "src": "4342:45:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 503,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "4359:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 504,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "validators",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1663,
                      "src": "4359:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function () view external returns (bytes32[] memory)"
                      }
                    },
                    "id": 505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4359:21:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 502,
                  "id": 506,
                  "nodeType": "Return",
                  "src": "4352:28:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries current validator keys.\n@notice Reads the current registries current validator keys.\n@return An array of bytes32 hex encoded tendermint public keys.",
            "id": 508,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "validators",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 498,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4298:2:5"
            },
            "returnParameters": {
              "id": 502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 501,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 508,
                  "src": "4324:16:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 499,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4324:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 500,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4324:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4323:18:5"
            },
            "scope": 642,
            "src": "4279:108:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 526,
              "nodeType": "Block",
              "src": "4917:52:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 523,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 510,
                        "src": "4954:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 521,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "4934:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 522,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getListing",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1676,
                      "src": "4934:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_enum$_Status_$1569_$_t_uint256_$_t_bytes32_$_t_address_$",
                        "typeString": "function (bytes32) view external returns (enum IValidatorRegistry.Status,uint256,bytes32,address)"
                      }
                    },
                    "id": 524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4934:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_Status_$1569_$_t_uint256_$_t_bytes32_$_t_address_$",
                      "typeString": "tuple(enum IValidatorRegistry.Status,uint256,bytes32,address)"
                    }
                  },
                  "functionReturnParameters": 520,
                  "id": 525,
                  "nodeType": "Return",
                  "src": "4927:35:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries listing entry for provided key.\n@notice Reads the current registries listing entry for provided key.\n@param _pubKey hex encoded tendermint public used as listing mapping key\n@return TODO currently returing some data that was used in the past.  will need a pass to update output",
            "id": 527,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 511,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 510,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 527,
                  "src": "4764:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 509,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4764:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4763:17:5"
            },
            "returnParameters": {
              "id": 520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 513,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 527,
                  "src": "4812:32:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Status_$1569",
                    "typeString": "enum IValidatorRegistry.Status"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 512,
                    "name": "IValidatorRegistry.Status",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1569,
                    "src": "4812:25:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 515,
                  "name": "applicationBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 527,
                  "src": "4846:21:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 514,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4846:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 517,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 527,
                  "src": "4869:27:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 516,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4869:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 519,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 527,
                  "src": "4898:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 518,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4898:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4811:101:5"
            },
            "scope": 642,
            "src": "4744:225:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 546,
              "nodeType": "Block",
              "src": "5474:91:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 539,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "5509:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 540,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5509:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 541,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 529,
                        "src": "5521:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 542,
                        "name": "_tokensToStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 531,
                        "src": "5530:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 543,
                        "name": "_rewardRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 533,
                        "src": "5546:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 536,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "5484:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 538,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerListing",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1687,
                      "src": "5484:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_int256_$returns$__$",
                        "typeString": "function (address,bytes32,uint256,int256) external"
                      }
                    },
                    "id": 544,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5484:74:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 545,
                  "nodeType": "ExpressionStatement",
                  "src": "5484:74:5"
                }
              ]
            },
            "documentation": "@dev Executes registerListing on the current registry.\n@notice Executes registerListing on the current registry.\n@param _pubKey hex encoded tendermint public used as listing mapping key\n@param _tokensToStake The number of tokes at stake if the order is challenged\n@param _rewardRate The rate tokens are minted or destroyed over the active listings reward periods",
            "id": 547,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "registerListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 529,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 547,
                  "src": "5410:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 528,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5410:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 531,
                  "name": "_tokensToStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 547,
                  "src": "5427:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 530,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5427:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 533,
                  "name": "_rewardRate",
                  "nodeType": "VariableDeclaration",
                  "scope": 547,
                  "src": "5448:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 532,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "5448:3:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5409:55:5"
            },
            "returnParameters": {
              "id": 535,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5474:0:5"
            },
            "scope": 642,
            "src": "5385:180:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 560,
              "nodeType": "Block",
              "src": "5828:63:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 555,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "5864:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 556,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5864:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 557,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 549,
                        "src": "5876:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 552,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "5838:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 554,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "challengeListing",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1694,
                      "src": "5838:25:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32) external"
                      }
                    },
                    "id": 558,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5838:46:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 559,
                  "nodeType": "ExpressionStatement",
                  "src": "5838:46:5"
                }
              ]
            },
            "documentation": "@dev Executes challenge on the current registry.\n@notice Executes challenge on the current registry.\n@param _pubKey hex encoded tendermint public used as listing mapping key",
            "id": 561,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "challengeListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 550,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 549,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 561,
                  "src": "5802:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 548,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5802:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5801:17:5"
            },
            "returnParameters": {
              "id": 551,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5828:0:5"
            },
            "scope": 642,
            "src": "5776:115:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 572,
              "nodeType": "Block",
              "src": "6166:51:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 569,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 563,
                        "src": "6202:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 566,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "6176:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 568,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "resolveChallenge",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1711,
                      "src": "6176:25:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32) external"
                      }
                    },
                    "id": 570,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6176:34:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 571,
                  "nodeType": "ExpressionStatement",
                  "src": "6176:34:5"
                }
              ]
            },
            "documentation": "@dev Executes resolveChallenge on the current registry.\n@notice Executes resolveChallenge on the current registry.\n@param _pubKey hex encoded tendermint public used as listing mapping key",
            "id": 573,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "resolveChallenge",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 564,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 563,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 573,
                  "src": "6142:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 562,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6142:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6141:17:5"
            },
            "returnParameters": {
              "id": 565,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6166:0:5"
            },
            "scope": 642,
            "src": "6116:101:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 586,
              "nodeType": "Block",
              "src": "6479:64:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 581,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "6512:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 582,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6512:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 583,
                        "name": "challengeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 575,
                        "src": "6524:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 578,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "6489:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 580,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "claimWinnings",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1701,
                      "src": "6489:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6489:47:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 585,
                  "nodeType": "ExpressionStatement",
                  "src": "6489:47:5"
                }
              ]
            },
            "documentation": "@dev Executes claimWinnings on the current registry.\n@notice Executes claimWinnings on the current registry.\n@param challengeId Id of challenge user may have tokens rewards in.",
            "id": 587,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "claimWinnings",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 576,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 575,
                  "name": "challengeId",
                  "nodeType": "VariableDeclaration",
                  "scope": 587,
                  "src": "6454:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 574,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6454:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6453:18:5"
            },
            "returnParameters": {
              "id": 577,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6479:0:5"
            },
            "scope": 642,
            "src": "6431:112:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 598,
              "nodeType": "Block",
              "src": "6808:47:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 595,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 589,
                        "src": "6840:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 592,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "6818:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 594,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "claimRewards",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1706,
                      "src": "6818:21:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32) external"
                      }
                    },
                    "id": 596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6818:30:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 597,
                  "nodeType": "ExpressionStatement",
                  "src": "6818:30:5"
                }
              ]
            },
            "documentation": "@dev Executes claimRewards on the current registry.\n@notice Executes claimRewards on the current registry.\n@param _pubKey Public key of listing that rewards need to be processed for",
            "id": 599,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "claimRewards",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 590,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 589,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 599,
                  "src": "6784:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 588,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6784:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6783:17:5"
            },
            "returnParameters": {
              "id": 591,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6808:0:5"
            },
            "scope": 642,
            "src": "6762:93:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 612,
              "nodeType": "Block",
              "src": "7126:61:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 607,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "7160:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7160:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 609,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 601,
                        "src": "7172:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 604,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "7136:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "confirmListing",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1718,
                      "src": "7136:23:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32) external"
                      }
                    },
                    "id": 610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7136:44:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 611,
                  "nodeType": "ExpressionStatement",
                  "src": "7136:44:5"
                }
              ]
            },
            "documentation": "@dev Executes confirmListing on the current registry.\n@notice Executes confirmListing on the current registry.\n@param _pubKey hex encoded tendermint public used as listing mapping key",
            "id": 613,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "confirmListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 601,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 613,
                  "src": "7100:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 600,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7100:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7099:17:5"
            },
            "returnParameters": {
              "id": 603,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7126:0:5"
            },
            "scope": 642,
            "src": "7076:111:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 626,
              "nodeType": "Block",
              "src": "7440:55:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 621,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "7468:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 622,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7468:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 623,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 615,
                        "src": "7480:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 618,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "7450:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 620,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initExit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1725,
                      "src": "7450:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32) external"
                      }
                    },
                    "id": 624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7450:38:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 625,
                  "nodeType": "ExpressionStatement",
                  "src": "7450:38:5"
                }
              ]
            },
            "documentation": "@dev Executes initExit on the current registry.\n@notice Executes initExit on the current registry.\n@param _pubKey hex encoded tendermint public used as listing mapping key",
            "id": 627,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initExit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 615,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 627,
                  "src": "7414:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 614,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7414:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7413:17:5"
            },
            "returnParameters": {
              "id": 617,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7440:0:5"
            },
            "scope": 642,
            "src": "7396:99:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 640,
              "nodeType": "Block",
              "src": "7760:59:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 635,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "7792:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7792:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 637,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 629,
                        "src": "7804:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 632,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "7770:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "finalizeExit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1732,
                      "src": "7770:21:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32) external"
                      }
                    },
                    "id": 638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7770:42:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 639,
                  "nodeType": "ExpressionStatement",
                  "src": "7770:42:5"
                }
              ]
            },
            "documentation": "@dev Executes finalizeExit on the current registry.\n@notice Executes finalizeExit on the current registry.\n@param _pubKey hex encoded tendermint public used as listing mapping key",
            "id": 641,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "finalizeExit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 630,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 629,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 641,
                  "src": "7734:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 628,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7734:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7733:17:5"
            },
            "returnParameters": {
              "id": 631,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7760:0:5"
            },
            "scope": 642,
            "src": "7712:107:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 643,
        "src": "164:7657:5"
      }
    ],
    "src": "0:7822:5"
  },
  "legacyAST": {
    "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/external/ValidatorRegistryProxy.sol",
    "exportedSymbols": {
      "ValidatorRegistryProxy": [
        642
      ]
    },
    "id": 643,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 360,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:5"
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/validator/IValidatorRegistry.sol",
        "file": "../validator/IValidatorRegistry.sol",
        "id": 361,
        "nodeType": "ImportDirective",
        "scope": 643,
        "sourceUnit": 1734,
        "src": "25:45:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/freydal/IdeaProjects/ParadigmContracts/internal/contracts/base/Authorizable.sol",
        "file": "../base/Authorizable.sol",
        "id": 362,
        "nodeType": "ImportDirective",
        "scope": 643,
        "sourceUnit": 103,
        "src": "71:34:5",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 363,
              "name": "Authorizable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 102,
              "src": "199:12:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Authorizable_$102",
                "typeString": "contract Authorizable"
              }
            },
            "id": 364,
            "nodeType": "InheritanceSpecifier",
            "src": "199:12:5"
          }
        ],
        "contractDependencies": [
          102
        ],
        "contractKind": "contract",
        "documentation": "@title ValidatorRegistryProxy\n@author Freydal",
        "fullyImplemented": true,
        "id": 642,
        "linearizedBaseContracts": [
          642,
          102
        ],
        "name": "ValidatorRegistryProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "constant": false,
            "id": 366,
            "name": "registry",
            "nodeType": "VariableDeclaration",
            "scope": 642,
            "src": "219:27:5",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
              "typeString": "contract IValidatorRegistry"
            },
            "typeName": {
              "contractScope": null,
              "id": 365,
              "name": "IValidatorRegistry",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 1733,
              "src": "219:18:5",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                "typeString": "contract IValidatorRegistry"
              }
            },
            "value": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 382,
              "nodeType": "Block",
              "src": "764:57:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 380,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 376,
                      "name": "registry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 366,
                      "src": "774:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                        "typeString": "contract IValidatorRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 378,
                          "name": "_registry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 368,
                          "src": "804:9:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 377,
                        "name": "IValidatorRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1733,
                        "src": "785:18:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IValidatorRegistry_$1733_$",
                          "typeString": "type(contract IValidatorRegistry)"
                        }
                      },
                      "id": 379,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "785:29:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                        "typeString": "contract IValidatorRegistry"
                      }
                    },
                    "src": "774:40:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                      "typeString": "contract IValidatorRegistry"
                    }
                  },
                  "id": 381,
                  "nodeType": "ExpressionStatement",
                  "src": "774:40:5"
                }
              ]
            },
            "documentation": "@dev Creates a Proxy for a ValidatorRegistry. Accepts an initial implementation that can be overwritten if a replacement is deployed.\n@notice Creates a Proxy for a ValidatorRegistry. Accepts an initial implementation that can be overwritten if a replacement is deployed.\n@param _registry Current deployed address for ValidatorRegistry implementation.\n@param auth AuthorizedAddresses deployed address.",
            "id": 383,
            "implemented": true,
            "kind": "constructor",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 373,
                    "name": "auth",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 370,
                    "src": "751:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  }
                ],
                "id": 374,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 372,
                  "name": "Authorizable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 102,
                  "src": "738:12:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_type$_t_contract$_Authorizable_$102_$",
                    "typeString": "type(contract Authorizable)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "738:18:5"
              }
            ],
            "name": "",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 371,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 368,
                  "name": "_registry",
                  "nodeType": "VariableDeclaration",
                  "scope": 383,
                  "src": "705:17:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 367,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "705:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 370,
                  "name": "auth",
                  "nodeType": "VariableDeclaration",
                  "scope": 383,
                  "src": "724:12:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 369,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "724:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "704:33:5"
            },
            "returnParameters": {
              "id": 375,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "764:0:5"
            },
            "scope": 642,
            "src": "693:128:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 396,
              "nodeType": "Block",
              "src": "1147:62:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 390,
                      "name": "registry",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 366,
                      "src": "1157:8:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                        "typeString": "contract IValidatorRegistry"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 392,
                          "name": "implementation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 385,
                          "src": "1187:14:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 391,
                        "name": "IValidatorRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1733,
                        "src": "1168:18:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IValidatorRegistry_$1733_$",
                          "typeString": "type(contract IValidatorRegistry)"
                        }
                      },
                      "id": 393,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1168:34:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                        "typeString": "contract IValidatorRegistry"
                      }
                    },
                    "src": "1157:45:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                      "typeString": "contract IValidatorRegistry"
                    }
                  },
                  "id": 395,
                  "nodeType": "ExpressionStatement",
                  "src": "1157:45:5"
                }
              ]
            },
            "documentation": "@dev Set a new ValidatorRegistry if a replacement is deployed.\n@notice Set a new ValidatorRegistry if a replacement is deployed.\n@param implementation Deployed address for replacement ValidatorRegistry implementation.",
            "id": 397,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 388,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 387,
                  "name": "isAuthorized",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 101,
                  "src": "1127:12:5",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1127:12:5"
              }
            ],
            "name": "setImplementation",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 386,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 385,
                  "name": "implementation",
                  "nodeType": "VariableDeclaration",
                  "scope": 397,
                  "src": "1103:22:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 384,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1103:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1102:24:5"
            },
            "returnParameters": {
              "id": 389,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1147:0:5"
            },
            "scope": 642,
            "src": "1076:133:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 406,
              "nodeType": "Block",
              "src": "1458:52:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 402,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "1475:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 403,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "applicationPeriod",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1612,
                      "src": "1475:26:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 404,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1475:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 401,
                  "id": 405,
                  "nodeType": "Return",
                  "src": "1468:35:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries applicationPeriod.\n@notice Reads the current registries applicationPeriod.\n@return Length of applicationPeriod in blocks.",
            "id": 407,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "applicationPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 398,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1428:2:5"
            },
            "returnParameters": {
              "id": 401,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 400,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 407,
                  "src": "1452:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 399,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1452:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1451:6:5"
            },
            "scope": 642,
            "src": "1402:108:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 416,
              "nodeType": "Block",
              "src": "1739:47:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 412,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "1756:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 413,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "commitPeriod",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1617,
                      "src": "1756:21:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 414,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1756:23:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 411,
                  "id": 415,
                  "nodeType": "Return",
                  "src": "1749:30:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries commitPeriod.\n@notice Reads the current registries commitPeriod.\n@return Length of commitPeriod in blocks.",
            "id": 417,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "commitPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 408,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1709:2:5"
            },
            "returnParameters": {
              "id": 411,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 410,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 417,
                  "src": "1733:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 409,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1733:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1732:6:5"
            },
            "scope": 642,
            "src": "1688:98:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 426,
              "nodeType": "Block",
              "src": "2027:50:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 422,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "2044:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 423,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "challengePeriod",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1622,
                      "src": "2044:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 424,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2044:26:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 421,
                  "id": 425,
                  "nodeType": "Return",
                  "src": "2037:33:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries challengePeriod.\n@notice Reads the current registries challengePeriod.\n@return Length of challengePeriod in blocks.",
            "id": 427,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "challengePeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 418,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1997:2:5"
            },
            "returnParameters": {
              "id": 421,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 420,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 427,
                  "src": "2021:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 419,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2021:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2020:6:5"
            },
            "scope": 642,
            "src": "1973:104:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 436,
              "nodeType": "Block",
              "src": "2298:45:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 432,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "2315:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 433,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "exitPeriod",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1627,
                      "src": "2315:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 434,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2315:21:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 431,
                  "id": 435,
                  "nodeType": "Return",
                  "src": "2308:28:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries exitPeriod.\n@notice Reads the current registries exitPeriod.\n@return Length of exitPeriod in blocks.",
            "id": 437,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "exitPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 428,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2268:2:5"
            },
            "returnParameters": {
              "id": 431,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 430,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 437,
                  "src": "2292:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 429,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2292:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2291:6:5"
            },
            "scope": 642,
            "src": "2249:94:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 446,
              "nodeType": "Block",
              "src": "2572:47:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 442,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "2589:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 443,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "rewardPeriod",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1632,
                      "src": "2589:21:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 444,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2589:23:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 441,
                  "id": 445,
                  "nodeType": "Return",
                  "src": "2582:30:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries rewardPeriod.\n@notice Reads the current registries rewardPeriod.\n@return Length of rewardPeriod in blocks.",
            "id": 447,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "rewardPeriod",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 438,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2542:2:5"
            },
            "returnParameters": {
              "id": 441,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 440,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 447,
                  "src": "2566:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 439,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2566:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2565:6:5"
            },
            "scope": 642,
            "src": "2521:98:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 456,
              "nodeType": "Block",
              "src": "2863:49:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 452,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "2880:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 453,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "minimumBalance",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1637,
                      "src": "2880:23:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 454,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2880:25:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 451,
                  "id": 455,
                  "nodeType": "Return",
                  "src": "2873:32:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries minimumBalance\n@notice Reads the current registries minimumBalance\n@return Minimum balance for listings and challenges.",
            "id": 457,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "minimumBalance",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 448,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2833:2:5"
            },
            "returnParameters": {
              "id": 451,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 450,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 457,
                  "src": "2857:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 449,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "2857:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2856:6:5"
            },
            "scope": 642,
            "src": "2810:102:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 466,
              "nodeType": "Block",
              "src": "3167:49:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 462,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "3184:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 463,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "stakeholderCut",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1642,
                      "src": "3184:23:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                        "typeString": "function () view external returns (uint256)"
                      }
                    },
                    "id": 464,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3184:25:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 461,
                  "id": 465,
                  "nodeType": "Return",
                  "src": "3177:32:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries stakeholderCut\n@notice Reads the current registries stakeholderCut\n@return Number of tokens the stakeholder gets after a challenge",
            "id": 467,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "stakeholderCut",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 458,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3137:2:5"
            },
            "returnParameters": {
              "id": 461,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 460,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 467,
                  "src": "3161:4:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 459,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "3161:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3160:6:5"
            },
            "scope": 642,
            "src": "3114:102:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 476,
              "nodeType": "Block",
              "src": "3458:43:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 472,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "3475:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 473,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "treasury",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1647,
                      "src": "3475:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3475:19:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 471,
                  "id": 475,
                  "nodeType": "Return",
                  "src": "3468:26:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries treasury contract address.\n@notice Reads the current registries treasury contract address.\n@return Address of Treasury",
            "id": 477,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "treasury",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 468,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3423:2:5"
            },
            "returnParameters": {
              "id": 471,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 470,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 477,
                  "src": "3449:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 469,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3449:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3448:9:5"
            },
            "scope": 642,
            "src": "3406:95:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 486,
              "nodeType": "Block",
              "src": "3736:41:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 482,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "3753:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 483,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voting",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1652,
                      "src": "3753:15:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 484,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3753:17:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 481,
                  "id": 485,
                  "nodeType": "Return",
                  "src": "3746:24:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries voting contract address.\n@notice Reads the current registries voting contract address.\n@return Address of Voting.",
            "id": 487,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "voting",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 478,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3701:2:5"
            },
            "returnParameters": {
              "id": 481,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 480,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 487,
                  "src": "3727:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 479,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3727:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3726:9:5"
            },
            "scope": 642,
            "src": "3686:91:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 496,
              "nodeType": "Block",
              "src": "4019:40:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 492,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "4036:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 493,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "token",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1657,
                      "src": "4036:14:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                        "typeString": "function () view external returns (address)"
                      }
                    },
                    "id": 494,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4036:16:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "functionReturnParameters": 491,
                  "id": 495,
                  "nodeType": "Return",
                  "src": "4029:23:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries token contract address.\n@notice Reads the current registries token contract address.\n@return Address of ERC20 token used.",
            "id": 497,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "token",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 488,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3984:2:5"
            },
            "returnParameters": {
              "id": 491,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 490,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 497,
                  "src": "4010:7:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 489,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4010:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4009:9:5"
            },
            "scope": 642,
            "src": "3970:89:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 507,
              "nodeType": "Block",
              "src": "4342:45:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "expression": {
                        "argumentTypes": null,
                        "id": 503,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "4359:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 504,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "validators",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1663,
                      "src": "4359:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$__$returns$_t_array$_t_bytes32_$dyn_memory_ptr_$",
                        "typeString": "function () view external returns (bytes32[] memory)"
                      }
                    },
                    "id": 505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4359:21:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                      "typeString": "bytes32[] memory"
                    }
                  },
                  "functionReturnParameters": 502,
                  "id": 506,
                  "nodeType": "Return",
                  "src": "4352:28:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries current validator keys.\n@notice Reads the current registries current validator keys.\n@return An array of bytes32 hex encoded tendermint public keys.",
            "id": 508,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "validators",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 498,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4298:2:5"
            },
            "returnParameters": {
              "id": 502,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 501,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 508,
                  "src": "4324:16:5",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_bytes32_$dyn_memory_ptr",
                    "typeString": "bytes32[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 499,
                      "name": "bytes32",
                      "nodeType": "ElementaryTypeName",
                      "src": "4324:7:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "id": 500,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "4324:9:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_bytes32_$dyn_storage_ptr",
                      "typeString": "bytes32[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4323:18:5"
            },
            "scope": 642,
            "src": "4279:108:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 526,
              "nodeType": "Block",
              "src": "4917:52:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 523,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 510,
                        "src": "4954:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 521,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "4934:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 522,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getListing",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1676,
                      "src": "4934:19:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_enum$_Status_$1569_$_t_uint256_$_t_bytes32_$_t_address_$",
                        "typeString": "function (bytes32) view external returns (enum IValidatorRegistry.Status,uint256,bytes32,address)"
                      }
                    },
                    "id": 524,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4934:28:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_enum$_Status_$1569_$_t_uint256_$_t_bytes32_$_t_address_$",
                      "typeString": "tuple(enum IValidatorRegistry.Status,uint256,bytes32,address)"
                    }
                  },
                  "functionReturnParameters": 520,
                  "id": 525,
                  "nodeType": "Return",
                  "src": "4927:35:5"
                }
              ]
            },
            "documentation": "@dev Reads the current registries listing entry for provided key.\n@notice Reads the current registries listing entry for provided key.\n@param _pubKey hex encoded tendermint public used as listing mapping key\n@return TODO currently returing some data that was used in the past.  will need a pass to update output",
            "id": 527,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 511,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 510,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 527,
                  "src": "4764:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 509,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4764:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4763:17:5"
            },
            "returnParameters": {
              "id": 520,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 513,
                  "name": "status",
                  "nodeType": "VariableDeclaration",
                  "scope": 527,
                  "src": "4812:32:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_Status_$1569",
                    "typeString": "enum IValidatorRegistry.Status"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 512,
                    "name": "IValidatorRegistry.Status",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 1569,
                    "src": "4812:25:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_enum$_Status_$1569",
                      "typeString": "enum IValidatorRegistry.Status"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 515,
                  "name": "applicationBlock",
                  "nodeType": "VariableDeclaration",
                  "scope": 527,
                  "src": "4846:21:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 514,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "4846:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 517,
                  "name": "tendermintPublicKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 527,
                  "src": "4869:27:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 516,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4869:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 519,
                  "name": "owner",
                  "nodeType": "VariableDeclaration",
                  "scope": 527,
                  "src": "4898:13:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 518,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4898:7:5",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4811:101:5"
            },
            "scope": 642,
            "src": "4744:225:5",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 546,
              "nodeType": "Block",
              "src": "5474:91:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 539,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "5509:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 540,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5509:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 541,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 529,
                        "src": "5521:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 542,
                        "name": "_tokensToStake",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 531,
                        "src": "5530:14:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 543,
                        "name": "_rewardRate",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 533,
                        "src": "5546:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_int256",
                          "typeString": "int256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 536,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "5484:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 538,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "registerListing",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1687,
                      "src": "5484:24:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$_t_uint256_$_t_int256_$returns$__$",
                        "typeString": "function (address,bytes32,uint256,int256) external"
                      }
                    },
                    "id": 544,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5484:74:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 545,
                  "nodeType": "ExpressionStatement",
                  "src": "5484:74:5"
                }
              ]
            },
            "documentation": "@dev Executes registerListing on the current registry.\n@notice Executes registerListing on the current registry.\n@param _pubKey hex encoded tendermint public used as listing mapping key\n@param _tokensToStake The number of tokes at stake if the order is challenged\n@param _rewardRate The rate tokens are minted or destroyed over the active listings reward periods",
            "id": 547,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "registerListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 534,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 529,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 547,
                  "src": "5410:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 528,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5410:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 531,
                  "name": "_tokensToStake",
                  "nodeType": "VariableDeclaration",
                  "scope": 547,
                  "src": "5427:19:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 530,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5427:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 533,
                  "name": "_rewardRate",
                  "nodeType": "VariableDeclaration",
                  "scope": 547,
                  "src": "5448:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int256",
                    "typeString": "int256"
                  },
                  "typeName": {
                    "id": 532,
                    "name": "int",
                    "nodeType": "ElementaryTypeName",
                    "src": "5448:3:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int256",
                      "typeString": "int256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5409:55:5"
            },
            "returnParameters": {
              "id": 535,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5474:0:5"
            },
            "scope": 642,
            "src": "5385:180:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 560,
              "nodeType": "Block",
              "src": "5828:63:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 555,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "5864:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 556,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "5864:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 557,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 549,
                        "src": "5876:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 552,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "5838:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 554,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "challengeListing",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1694,
                      "src": "5838:25:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32) external"
                      }
                    },
                    "id": 558,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5838:46:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 559,
                  "nodeType": "ExpressionStatement",
                  "src": "5838:46:5"
                }
              ]
            },
            "documentation": "@dev Executes challenge on the current registry.\n@notice Executes challenge on the current registry.\n@param _pubKey hex encoded tendermint public used as listing mapping key",
            "id": 561,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "challengeListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 550,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 549,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 561,
                  "src": "5802:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 548,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5802:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5801:17:5"
            },
            "returnParameters": {
              "id": 551,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5828:0:5"
            },
            "scope": 642,
            "src": "5776:115:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 572,
              "nodeType": "Block",
              "src": "6166:51:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 569,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 563,
                        "src": "6202:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 566,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "6176:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 568,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "resolveChallenge",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1711,
                      "src": "6176:25:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32) external"
                      }
                    },
                    "id": 570,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6176:34:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 571,
                  "nodeType": "ExpressionStatement",
                  "src": "6176:34:5"
                }
              ]
            },
            "documentation": "@dev Executes resolveChallenge on the current registry.\n@notice Executes resolveChallenge on the current registry.\n@param _pubKey hex encoded tendermint public used as listing mapping key",
            "id": 573,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "resolveChallenge",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 564,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 563,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 573,
                  "src": "6142:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 562,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6142:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6141:17:5"
            },
            "returnParameters": {
              "id": 565,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6166:0:5"
            },
            "scope": 642,
            "src": "6116:101:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 586,
              "nodeType": "Block",
              "src": "6479:64:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 581,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "6512:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 582,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "6512:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 583,
                        "name": "challengeId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 575,
                        "src": "6524:11:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 578,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "6489:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 580,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "claimWinnings",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1701,
                      "src": "6489:22:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$__$",
                        "typeString": "function (address,uint256) external"
                      }
                    },
                    "id": 584,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6489:47:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 585,
                  "nodeType": "ExpressionStatement",
                  "src": "6489:47:5"
                }
              ]
            },
            "documentation": "@dev Executes claimWinnings on the current registry.\n@notice Executes claimWinnings on the current registry.\n@param challengeId Id of challenge user may have tokens rewards in.",
            "id": 587,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "claimWinnings",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 576,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 575,
                  "name": "challengeId",
                  "nodeType": "VariableDeclaration",
                  "scope": 587,
                  "src": "6454:16:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 574,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "6454:4:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6453:18:5"
            },
            "returnParameters": {
              "id": 577,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6479:0:5"
            },
            "scope": 642,
            "src": "6431:112:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 598,
              "nodeType": "Block",
              "src": "6808:47:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 595,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 589,
                        "src": "6840:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 592,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "6818:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 594,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "claimRewards",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1706,
                      "src": "6818:21:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32) external"
                      }
                    },
                    "id": 596,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6818:30:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 597,
                  "nodeType": "ExpressionStatement",
                  "src": "6818:30:5"
                }
              ]
            },
            "documentation": "@dev Executes claimRewards on the current registry.\n@notice Executes claimRewards on the current registry.\n@param _pubKey Public key of listing that rewards need to be processed for",
            "id": 599,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "claimRewards",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 590,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 589,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 599,
                  "src": "6784:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 588,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6784:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6783:17:5"
            },
            "returnParameters": {
              "id": 591,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6808:0:5"
            },
            "scope": 642,
            "src": "6762:93:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 612,
              "nodeType": "Block",
              "src": "7126:61:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 607,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "7160:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 608,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7160:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 609,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 601,
                        "src": "7172:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 604,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "7136:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 606,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "confirmListing",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1718,
                      "src": "7136:23:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32) external"
                      }
                    },
                    "id": 610,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7136:44:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 611,
                  "nodeType": "ExpressionStatement",
                  "src": "7136:44:5"
                }
              ]
            },
            "documentation": "@dev Executes confirmListing on the current registry.\n@notice Executes confirmListing on the current registry.\n@param _pubKey hex encoded tendermint public used as listing mapping key",
            "id": 613,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "confirmListing",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 601,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 613,
                  "src": "7100:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 600,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7100:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7099:17:5"
            },
            "returnParameters": {
              "id": 603,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7126:0:5"
            },
            "scope": 642,
            "src": "7076:111:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 626,
              "nodeType": "Block",
              "src": "7440:55:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 621,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "7468:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 622,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7468:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 623,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 615,
                        "src": "7480:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 618,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "7450:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 620,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "initExit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1725,
                      "src": "7450:17:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32) external"
                      }
                    },
                    "id": 624,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7450:38:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 625,
                  "nodeType": "ExpressionStatement",
                  "src": "7450:38:5"
                }
              ]
            },
            "documentation": "@dev Executes initExit on the current registry.\n@notice Executes initExit on the current registry.\n@param _pubKey hex encoded tendermint public used as listing mapping key",
            "id": 627,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "initExit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 616,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 615,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 627,
                  "src": "7414:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 614,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7414:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7413:17:5"
            },
            "returnParameters": {
              "id": 617,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7440:0:5"
            },
            "scope": 642,
            "src": "7396:99:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 640,
              "nodeType": "Block",
              "src": "7760:59:5",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 635,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4569,
                          "src": "7792:3:5",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 636,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7792:10:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 637,
                        "name": "_pubKey",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 629,
                        "src": "7804:7:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 632,
                        "name": "registry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 366,
                        "src": "7770:8:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_IValidatorRegistry_$1733",
                          "typeString": "contract IValidatorRegistry"
                        }
                      },
                      "id": 634,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "finalizeExit",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 1732,
                      "src": "7770:21:5",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (address,bytes32) external"
                      }
                    },
                    "id": 638,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7770:42:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 639,
                  "nodeType": "ExpressionStatement",
                  "src": "7770:42:5"
                }
              ]
            },
            "documentation": "@dev Executes finalizeExit on the current registry.\n@notice Executes finalizeExit on the current registry.\n@param _pubKey hex encoded tendermint public used as listing mapping key",
            "id": 641,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "finalizeExit",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 630,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 629,
                  "name": "_pubKey",
                  "nodeType": "VariableDeclaration",
                  "scope": 641,
                  "src": "7734:15:5",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 628,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7734:7:5",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7733:17:5"
            },
            "returnParameters": {
              "id": 631,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7760:0:5"
            },
            "scope": 642,
            "src": "7712:107:5",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          }
        ],
        "scope": 643,
        "src": "164:7657:5"
      }
    ],
    "src": "0:7822:5"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.0+commit.1d4f565a.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {},
      "address": "0xf277f6009869B701AdaD8D29Cbc7D029Bbe5391d",
      "transactionHash": "0x583f988535bc0b2cb5f5a73cb7b145e186a49481bf8747be1648eb9927b0db77"
    },
    "6174": {
      "events": {},
      "links": {},
      "address": "0x73C0988a0ea1A028c7eF620bdAFeD034Eb9EFA17",
      "transactionHash": "0x612c8033e71cfd4f697d9bc2fc13902d018e1bd3f7f9172db3a30c2b5e305729"
    }
  },
  "schemaVersion": "3.0.2",
  "updatedAt": "2019-04-04T17:37:24.646Z",
  "devdoc": {
    "author": "Freydal",
    "methods": {
      "applicationPeriod()": {
        "details": "Reads the current registries applicationPeriod.",
        "return": "Length of applicationPeriod in blocks."
      },
      "challengeListing(bytes32)": {
        "details": "Executes challenge on the current registry.",
        "params": {
          "_pubKey": "hex encoded tendermint public used as listing mapping key"
        }
      },
      "challengePeriod()": {
        "details": "Reads the current registries challengePeriod.",
        "return": "Length of challengePeriod in blocks."
      },
      "claimRewards(bytes32)": {
        "details": "Executes claimRewards on the current registry.",
        "params": {
          "_pubKey": "Public key of listing that rewards need to be processed for"
        }
      },
      "claimWinnings(uint256)": {
        "details": "Executes claimWinnings on the current registry.",
        "params": {
          "challengeId": "Id of challenge user may have tokens rewards in."
        }
      },
      "commitPeriod()": {
        "details": "Reads the current registries commitPeriod.",
        "return": "Length of commitPeriod in blocks."
      },
      "confirmListing(bytes32)": {
        "details": "Executes confirmListing on the current registry.",
        "params": {
          "_pubKey": "hex encoded tendermint public used as listing mapping key"
        }
      },
      "constructor": {
        "details": "Creates a Proxy for a ValidatorRegistry. Accepts an initial implementation that can be overwritten if a replacement is deployed.",
        "params": {
          "_registry": "Current deployed address for ValidatorRegistry implementation.",
          "auth": "AuthorizedAddresses deployed address."
        }
      },
      "exitPeriod()": {
        "details": "Reads the current registries exitPeriod.",
        "return": "Length of exitPeriod in blocks."
      },
      "finalizeExit(bytes32)": {
        "details": "Executes finalizeExit on the current registry.",
        "params": {
          "_pubKey": "hex encoded tendermint public used as listing mapping key"
        }
      },
      "getListing(bytes32)": {
        "details": "Reads the current registries listing entry for provided key.",
        "params": {
          "_pubKey": "hex encoded tendermint public used as listing mapping key"
        },
        "return": "TODO currently returing some data that was used in the past.  will need a pass to update output"
      },
      "initExit(bytes32)": {
        "details": "Executes initExit on the current registry.",
        "params": {
          "_pubKey": "hex encoded tendermint public used as listing mapping key"
        }
      },
      "minimumBalance()": {
        "details": "Reads the current registries minimumBalance",
        "return": "Minimum balance for listings and challenges."
      },
      "registerListing(bytes32,uint256,int256)": {
        "details": "Executes registerListing on the current registry.",
        "params": {
          "_pubKey": "hex encoded tendermint public used as listing mapping key",
          "_rewardRate": "The rate tokens are minted or destroyed over the active listings reward periods",
          "_tokensToStake": "The number of tokes at stake if the order is challenged"
        }
      },
      "resolveChallenge(bytes32)": {
        "details": "Executes resolveChallenge on the current registry.",
        "params": {
          "_pubKey": "hex encoded tendermint public used as listing mapping key"
        }
      },
      "rewardPeriod()": {
        "details": "Reads the current registries rewardPeriod.",
        "return": "Length of rewardPeriod in blocks."
      },
      "setImplementation(address)": {
        "details": "Set a new ValidatorRegistry if a replacement is deployed.",
        "params": {
          "implementation": "Deployed address for replacement ValidatorRegistry implementation."
        }
      },
      "stakeholderCut()": {
        "details": "Reads the current registries stakeholderCut",
        "return": "Number of tokens the stakeholder gets after a challenge"
      },
      "token()": {
        "details": "Reads the current registries token contract address.",
        "return": "Address of ERC20 token used."
      },
      "treasury()": {
        "details": "Reads the current registries treasury contract address.",
        "return": "Address of Treasury"
      },
      "validators()": {
        "details": "Reads the current registries current validator keys.",
        "return": "An array of bytes32 hex encoded tendermint public keys."
      },
      "voting()": {
        "details": "Reads the current registries voting contract address.",
        "return": "Address of Voting."
      }
    },
    "title": "ValidatorRegistryProxy"
  },
  "userdoc": {
    "methods": {
      "applicationPeriod()": {
        "notice": "Reads the current registries applicationPeriod."
      },
      "challengeListing(bytes32)": {
        "notice": "Executes challenge on the current registry."
      },
      "challengePeriod()": {
        "notice": "Reads the current registries challengePeriod."
      },
      "claimRewards(bytes32)": {
        "notice": "Executes claimRewards on the current registry."
      },
      "claimWinnings(uint256)": {
        "notice": "Executes claimWinnings on the current registry."
      },
      "commitPeriod()": {
        "notice": "Reads the current registries commitPeriod."
      },
      "confirmListing(bytes32)": {
        "notice": "Executes confirmListing on the current registry."
      },
      "constructor": "Creates a Proxy for a ValidatorRegistry. Accepts an initial implementation that can be overwritten if a replacement is deployed.",
      "exitPeriod()": {
        "notice": "Reads the current registries exitPeriod."
      },
      "finalizeExit(bytes32)": {
        "notice": "Executes finalizeExit on the current registry."
      },
      "getListing(bytes32)": {
        "notice": "Reads the current registries listing entry for provided key."
      },
      "initExit(bytes32)": {
        "notice": "Executes initExit on the current registry."
      },
      "minimumBalance()": {
        "notice": "Reads the current registries minimumBalance"
      },
      "registerListing(bytes32,uint256,int256)": {
        "notice": "Executes registerListing on the current registry."
      },
      "resolveChallenge(bytes32)": {
        "notice": "Executes resolveChallenge on the current registry."
      },
      "rewardPeriod()": {
        "notice": "Reads the current registries rewardPeriod."
      },
      "setImplementation(address)": {
        "notice": "Set a new ValidatorRegistry if a replacement is deployed."
      },
      "stakeholderCut()": {
        "notice": "Reads the current registries stakeholderCut"
      },
      "token()": {
        "notice": "Reads the current registries token contract address."
      },
      "treasury()": {
        "notice": "Reads the current registries treasury contract address."
      },
      "validators()": {
        "notice": "Reads the current registries current validator keys."
      },
      "voting()": {
        "notice": "Reads the current registries voting contract address."
      }
    }
  }
}