{
  "contractName": "ETHBetKernelProxy",
  "abi": [
    {
      "constant": true,
      "inputs": [],
      "name": "betRegistry",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_betRegistry",
          "type": "address"
        }
      ],
      "name": "setBetRegistry",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Pause",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unpause",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipRenounced",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_betHash",
          "type": "bytes32"
        },
        {
          "name": "_playerBetHashProof",
          "type": "bytes32"
        },
        {
          "name": "_player",
          "type": "address"
        },
        {
          "name": "_option",
          "type": "uint256"
        },
        {
          "name": "_number",
          "type": "uint256"
        }
      ],
      "name": "placeBet",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": true,
      "stateMutability": "payable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_betHash",
          "type": "bytes32"
        },
        {
          "name": "_playerBetHash",
          "type": "bytes32"
        }
      ],
      "name": "getProfits",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405260008060146101000a81548160ff021916908315150217905550336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550612a4d8061006d6000396000f3006080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631ff677bf146100a95780633f4ba83a146101005780635c975abb14610117578063715018a6146101465780637355ac8f1461015d5780638456cb59146101b45780638da5cb5b146101cb57806395eb006d14610222578063efdb2b46146102a0578063f2fde38b146102e3575b600080fd5b3480156100b557600080fd5b506100be610326565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561010c57600080fd5b50610115610350565b005b34801561012357600080fd5b5061012c61040e565b604051808215151515815260200191505060405180910390f35b34801561015257600080fd5b5061015b610421565b005b34801561016957600080fd5b5061019a60048036038101908080356000191690602001909291908035600019169060200190929190505050610523565b604051808215151515815260200191505060405180910390f35b3480156101c057600080fd5b506101c96119b2565b005b3480156101d757600080fd5b506101e0611a72565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61028660048036038101908080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611a97565b604051808215151515815260200191505060405180910390f35b3480156102ac57600080fd5b506102e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127fc565b005b3480156102ef57600080fd5b50610324600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128c0565b005b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103ab57600080fd5b600060149054906101000a900460ff1615156103c657600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600060149054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561047c57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd943d046040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156105b157600080fd5b505af11580156105c5573d6000803e3d6000fd5b505050506040513d60208110156105db57600080fd5b81019080805190602001909291905050509350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380fabc916040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561067457600080fd5b505af1158015610688573d6000803e3d6000fd5b505050506040513d602081101561069e57600080fd5b81019080805190602001909291905050509250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca033e7d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561073757600080fd5b505af115801561074b573d6000803e3d6000fd5b505050506040513d602081101561076157600080fd5b81019080805190602001909291905050509150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381bf370288886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561081d57600080fd5b505af1158015610831573d6000803e3d6000fd5b505050506040513d602081101561084757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561089157600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d5e693888886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561093a57600080fd5b505af115801561094e573d6000803e3d6000fd5b505050506040513d602081101561096457600080fd5b810190808051906020019092919050505015151561098157600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a03db036600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330cdb40d8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610a3657600080fd5b505af1158015610a4a573d6000803e3d6000fd5b505050506040513d6020811015610a6057600080fd5b8101908080519060200190929190505050896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050602060405180830381600087803b158015610aff57600080fd5b505af1158015610b13573d6000803e3d6000fd5b505050506040513d6020811015610b2957600080fd5b81019080805190602001909291905050501515610b4557600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637d95ff8988886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b158015610bee57600080fd5b505af1158015610c02573d6000803e3d6000fd5b505050506040513d6020811015610c1857600080fd5b81019080805190602001909291905050508373ffffffffffffffffffffffffffffffffffffffff1663ef5cc573600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330cdb40d8b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610cde57600080fd5b505af1158015610cf2573d6000803e3d6000fd5b505050506040513d6020811015610d0857600080fd5b81019080805190602001909291905050508a6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050602060405180830381600087803b158015610da757600080fd5b505af1158015610dbb573d6000803e3d6000fd5b505050506040513d6020811015610dd157600080fd5b8101908080519060200190929190505050141515610df257600094506119a8565b8173ffffffffffffffffffffffffffffffffffffffff16631d765158600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637171e7578a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610ea757600080fd5b505af1158015610ebb573d6000803e3d6000fd5b505050506040513d6020811015610ed157600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663825074528b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b505050506040513d6020811015610fa557600080fd5b81019080805190602001909291905050506040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050602060405180830381600087803b15801561104357600080fd5b505af1158015611057573d6000803e3d6000fd5b505050506040513d602081101561106d57600080fd5b8101908080519060200190929190505050151561108957600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2aa5d0c88886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561113257600080fd5b505af1158015611146573d6000803e3d6000fd5b505050506040513d602081101561115c57600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632659a07489600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637d95ff898c8c6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561125557600080fd5b505af1158015611269573d6000803e3d6000fd5b505050506040513d602081101561127f57600080fd5b81019080805190602001909291905050506040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050602060405180830381600087803b1580156112f157600080fd5b505af1158015611305573d6000803e3d6000fd5b505050506040513d602081101561131b57600080fd5b810190808051906020019092919050505081151561133557fe5b04905080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663afc27791896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156113d257600080fd5b505af11580156113e6573d6000803e3d6000fd5b505050506040513d60208110156113fc57600080fd5b810190808051906020019092919050505081151561141657fe5b0490508373ffffffffffffffffffffffffffffffffffffffff1663f18d03cc600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314715bcc8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156114ce57600080fd5b505af11580156114e2573d6000803e3d6000fd5b505050506040513d60208110156114f857600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de1028e18b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156115a257600080fd5b505af11580156115b6573d6000803e3d6000fd5b505050506040513d60208110156115cc57600080fd5b810190808051906020019092919050505030856040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b1580156116ca57600080fd5b505af11580156116de573d6000803e3d6000fd5b505050506040513d60208110156116f457600080fd5b8101908080519060200190929190505050151561171057600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341b273bb888860016040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600019166000191681526020018360001916600019168152602001821515151581526020019350505050602060405180830381600087803b1580156117c657600080fd5b505af11580156117da573d6000803e3d6000fd5b505050506040513d60208110156117f057600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de1028e1886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561189b57600080fd5b505af11580156118af573d6000803e3d6000fd5b505050506040513d60208110156118c557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561194457600080fd5b505af1158015611958573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119a2573d6000803e3d6000fd5b50600194505b5050505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0d57600080fd5b600060149054906101000a900460ff16151515611a2957600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314715bcc8c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611b3957600080fd5b505af1158015611b4d573d6000803e3d6000fd5b505050506040513d6020811015611b6357600080fd5b81019080805190602001909291905050509450600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de1028e18c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611c0f57600080fd5b505af1158015611c23573d6000803e3d6000fd5b505050506040513d6020811015611c3957600080fd5b81019080805190602001909291905050509350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd943d046040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611cd257600080fd5b505af1158015611ce6573d6000803e3d6000fd5b505050506040513d6020811015611cfc57600080fd5b81019080805190602001909291905050509250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca033e7d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611d9557600080fd5b505af1158015611da9573d6000803e3d6000fd5b505050506040513d6020811015611dbf57600080fd5b810190808051906020019092919050505091508634141515611e6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f616d6f756e7420676976656e20697320646966666572656e74207468616e207681526020017f616c75652073656e74000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600087111515611f0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f796f75206d7573742073656e6420657468657220746f20706c6163652061206281526020017f657400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b158015611f7157600080fd5b505af1158015611f85573d6000803e3d6000fd5b50505050508373ffffffffffffffffffffffffffffffffffffffff1663095ea7b384896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561202d57600080fd5b505af1158015612041573d6000803e3d6000fd5b505050506040513d602081101561205757600080fd5b810190808051906020019092919050505015156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f636f756c646e277420617070726f76652077657468000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16630348525e600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637171e7578e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561219157600080fd5b505af11580156121a5573d6000803e3d6000fd5b505050506040513d60208110156121bb57600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663825074528f6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561226557600080fd5b505af1158015612279573d6000803e3d6000fd5b505050506040513d602081101561228f57600080fd5b81019080805190602001909291905050506040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050602060405180830381600087803b15801561232d57600080fd5b505af1158015612341573d6000803e3d6000fd5b505050506040513d602081101561235757600080fd5b8101908080519060200190929190505050151561237357600080fd5b8273ffffffffffffffffffffffffffffffffffffffff16636e275bd2868630878c6040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200195505050505050602060405180830381600087803b1580156124b257600080fd5b505af11580156124c6573d6000803e3d6000fd5b505050506040513d60208110156124dc57600080fd5b810190808051906020019092919050505015156124f857600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635faa7cee8c8b8b8b6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018085600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001945050505050602060405180830381600087803b1580156125d557600080fd5b505af11580156125e9573d6000803e3d6000fd5b505050506040513d60208110156125ff57600080fd5b8101908080519060200190929190505050905080600019168a6000191614151561262857600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fc2c76c8c896040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050602060405180830381600087803b1580156126c957600080fd5b505af11580156126dd573d6000803e3d6000fd5b505050506040513d60208110156126f357600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b90a41498c8a8a6040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600019166000191681526020018381526020018281526020019350505050602060405180830381600087803b1580156127ae57600080fd5b505af11580156127c2573d6000803e3d6000fd5b505050506040513d60208110156127d857600080fd5b81019080805190602001909291905050505060019550505050505095945050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561285757600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060001515600060149054906101000a900460ff16151514156128bd576128bc6119b2565b5b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561291b57600080fd5b61292481612927565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561296357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a7230582073f4ec0e5d97b1e7db5d4e0718fa5e8b4c4dce78984569989b003f8ed62555500029",
  "deployedBytecode": "0x6080604052600436106100a4576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680631ff677bf146100a95780633f4ba83a146101005780635c975abb14610117578063715018a6146101465780637355ac8f1461015d5780638456cb59146101b45780638da5cb5b146101cb57806395eb006d14610222578063efdb2b46146102a0578063f2fde38b146102e3575b600080fd5b3480156100b557600080fd5b506100be610326565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561010c57600080fd5b50610115610350565b005b34801561012357600080fd5b5061012c61040e565b604051808215151515815260200191505060405180910390f35b34801561015257600080fd5b5061015b610421565b005b34801561016957600080fd5b5061019a60048036038101908080356000191690602001909291908035600019169060200190929190505050610523565b604051808215151515815260200191505060405180910390f35b3480156101c057600080fd5b506101c96119b2565b005b3480156101d757600080fd5b506101e0611a72565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61028660048036038101908080356000191690602001909291908035600019169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050611a97565b604051808215151515815260200191505060405180910390f35b3480156102ac57600080fd5b506102e1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506127fc565b005b3480156102ef57600080fd5b50610324600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506128c0565b005b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156103ab57600080fd5b600060149054906101000a900460ff1615156103c657600080fd5b60008060146101000a81548160ff0219169083151502179055507f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a1565b600060149054906101000a900460ff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561047c57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000806000806000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd943d046040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b1580156105b157600080fd5b505af11580156105c5573d6000803e3d6000fd5b505050506040513d60208110156105db57600080fd5b81019080805190602001909291905050509350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166380fabc916040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561067457600080fd5b505af1158015610688573d6000803e3d6000fd5b505050506040513d602081101561069e57600080fd5b81019080805190602001909291905050509250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca033e7d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b15801561073757600080fd5b505af115801561074b573d6000803e3d6000fd5b505050506040513d602081101561076157600080fd5b81019080805190602001909291905050509150600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166381bf370288886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561081d57600080fd5b505af1158015610831573d6000803e3d6000fd5b505050506040513d602081101561084757600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561089157600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639d5e693888886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561093a57600080fd5b505af115801561094e573d6000803e3d6000fd5b505050506040513d602081101561096457600080fd5b810190808051906020019092919050505015151561098157600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a03db036600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330cdb40d8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610a3657600080fd5b505af1158015610a4a573d6000803e3d6000fd5b505050506040513d6020811015610a6057600080fd5b8101908080519060200190929190505050896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050602060405180830381600087803b158015610aff57600080fd5b505af1158015610b13573d6000803e3d6000fd5b505050506040513d6020811015610b2957600080fd5b81019080805190602001909291905050501515610b4557600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637d95ff8988886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b158015610bee57600080fd5b505af1158015610c02573d6000803e3d6000fd5b505050506040513d6020811015610c1857600080fd5b81019080805190602001909291905050508373ffffffffffffffffffffffffffffffffffffffff1663ef5cc573600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166330cdb40d8b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610cde57600080fd5b505af1158015610cf2573d6000803e3d6000fd5b505050506040513d6020811015610d0857600080fd5b81019080805190602001909291905050508a6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050602060405180830381600087803b158015610da757600080fd5b505af1158015610dbb573d6000803e3d6000fd5b505050506040513d6020811015610dd157600080fd5b8101908080519060200190929190505050141515610df257600094506119a8565b8173ffffffffffffffffffffffffffffffffffffffff16631d765158600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637171e7578a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610ea757600080fd5b505af1158015610ebb573d6000803e3d6000fd5b505050506040513d6020811015610ed157600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663825074528b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015610f7b57600080fd5b505af1158015610f8f573d6000803e3d6000fd5b505050506040513d6020811015610fa557600080fd5b81019080805190602001909291905050506040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050602060405180830381600087803b15801561104357600080fd5b505af1158015611057573d6000803e3d6000fd5b505050506040513d602081101561106d57600080fd5b8101908080519060200190929190505050151561108957600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b2aa5d0c88886040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561113257600080fd5b505af1158015611146573d6000803e3d6000fd5b505050506040513d602081101561115c57600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632659a07489600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637d95ff898c8c6040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808360001916600019168152602001826000191660001916815260200192505050602060405180830381600087803b15801561125557600080fd5b505af1158015611269573d6000803e3d6000fd5b505050506040513d602081101561127f57600080fd5b81019080805190602001909291905050506040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050602060405180830381600087803b1580156112f157600080fd5b505af1158015611305573d6000803e3d6000fd5b505050506040513d602081101561131b57600080fd5b810190808051906020019092919050505081151561133557fe5b04905080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663afc27791896040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156113d257600080fd5b505af11580156113e6573d6000803e3d6000fd5b505050506040513d60208110156113fc57600080fd5b810190808051906020019092919050505081151561141657fe5b0490508373ffffffffffffffffffffffffffffffffffffffff1663f18d03cc600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314715bcc8a6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156114ce57600080fd5b505af11580156114e2573d6000803e3d6000fd5b505050506040513d60208110156114f857600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de1028e18b6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b1580156115a257600080fd5b505af11580156115b6573d6000803e3d6000fd5b505050506040513d60208110156115cc57600080fd5b810190808051906020019092919050505030856040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001828152602001945050505050602060405180830381600087803b1580156116ca57600080fd5b505af11580156116de573d6000803e3d6000fd5b505050506040513d60208110156116f457600080fd5b8101908080519060200190929190505050151561171057600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166341b273bb888860016040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600019166000191681526020018360001916600019168152602001821515151581526020019350505050602060405180830381600087803b1580156117c657600080fd5b505af11580156117da573d6000803e3d6000fd5b505050506040513d60208110156117f057600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de1028e1886040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561189b57600080fd5b505af11580156118af573d6000803e3d6000fd5b505050506040513d60208110156118c557600080fd5b810190808051906020019092919050505073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381600087803b15801561194457600080fd5b505af1158015611958573d6000803e3d6000fd5b505050503373ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f193505050501580156119a2573d6000803e3d6000fd5b50600194505b5050505092915050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a0d57600080fd5b600060149054906101000a900460ff16151515611a2957600080fd5b6001600060146101000a81548160ff0219169083151502179055507f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a1565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166314715bcc8c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611b3957600080fd5b505af1158015611b4d573d6000803e3d6000fd5b505050506040513d6020811015611b6357600080fd5b81019080805190602001909291905050509450600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663de1028e18c6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b158015611c0f57600080fd5b505af1158015611c23573d6000803e3d6000fd5b505050506040513d6020811015611c3957600080fd5b81019080805190602001909291905050509350600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd943d046040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611cd257600080fd5b505af1158015611ce6573d6000803e3d6000fd5b505050506040513d6020811015611cfc57600080fd5b81019080805190602001909291905050509250600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ca033e7d6040518163ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401602060405180830381600087803b158015611d9557600080fd5b505af1158015611da9573d6000803e3d6000fd5b505050506040513d6020811015611dbf57600080fd5b810190808051906020019092919050505091508634141515611e6f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001807f616d6f756e7420676976656e20697320646966666572656e74207468616e207681526020017f616c75652073656e74000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b600087111515611f0d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f796f75206d7573742073656e6420657468657220746f20706c6163652061206281526020017f657400000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b8373ffffffffffffffffffffffffffffffffffffffff1663d0e30db0346040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b158015611f7157600080fd5b505af1158015611f85573d6000803e3d6000fd5b50505050508373ffffffffffffffffffffffffffffffffffffffff1663095ea7b384896040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561202d57600080fd5b505af1158015612041573d6000803e3d6000fd5b505050506040513d602081101561205757600080fd5b810190808051906020019092919050505015156120dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f636f756c646e277420617070726f76652077657468000000000000000000000081525060200191505060405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff16630348525e600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16637171e7578e6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561219157600080fd5b505af11580156121a5573d6000803e3d6000fd5b505050506040513d60208110156121bb57600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663825074528f6040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808260001916600019168152602001915050602060405180830381600087803b15801561226557600080fd5b505af1158015612279573d6000803e3d6000fd5b505050506040513d602081101561228f57600080fd5b81019080805190602001909291905050506040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826000191660001916815260200192505050602060405180830381600087803b15801561232d57600080fd5b505af1158015612341573d6000803e3d6000fd5b505050506040513d602081101561235757600080fd5b8101908080519060200190929190505050151561237357600080fd5b8273ffffffffffffffffffffffffffffffffffffffff16636e275bd2868630878c6040518663ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200195505050505050602060405180830381600087803b1580156124b257600080fd5b505af11580156124c6573d6000803e3d6000fd5b505050506040513d60208110156124dc57600080fd5b810190808051906020019092919050505015156124f857600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635faa7cee8c8b8b8b6040518563ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018085600019166000191681526020018473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001945050505050602060405180830381600087803b1580156125d557600080fd5b505af11580156125e9573d6000803e3d6000fd5b505050506040513d60208110156125ff57600080fd5b8101908080519060200190929190505050905080600019168a6000191614151561262857600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16634fc2c76c8c896040518363ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180836000191660001916815260200182815260200192505050602060405180830381600087803b1580156126c957600080fd5b505af11580156126dd573d6000803e3d6000fd5b505050506040513d60208110156126f357600080fd5b810190808051906020019092919050505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b90a41498c8a8a6040518463ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018084600019166000191681526020018381526020018281526020019350505050602060405180830381600087803b1580156127ae57600080fd5b505af11580156127c2573d6000803e3d6000fd5b505050506040513d60208110156127d857600080fd5b81019080805190602001909291905050505060019550505050505095945050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561285757600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060001515600060149054906101000a900460ff16151514156128bd576128bc6119b2565b5b50565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561291b57600080fd5b61292481612927565b50565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415151561296357600080fd5b8073ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505600a165627a7a7230582073f4ec0e5d97b1e7db5d4e0718fa5e8b4c4dce78984569989b003f8ed62555500029",
  "sourceMap": "519:4289:3:-;;;268:5:28;247:26;;;;;;;;;;;;;;;;;;;;575:10:30;567:5;;:18;;;;;;;;;;;;;;;;;;519:4289:3;;;;;;",
  "deployedSourceMap": "519:4289:3:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;946:126:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;946:126:23;;;;;;;;;;;;;;;;;;;;;;;;;;;838:92:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;838:92:28;;;;;;247:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;247:26:28;;;;;;;;;;;;;;;;;;;;;;;;;;;827:111:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;827:111:30;;;;;;2874:1932:3;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2874:1932:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;666:90:28;;8:9:-1;5:2;;;30:1;27;20:12;5:2;666:90:28;;;;;;238:20:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:20:30;;;;;;;;;;;;;;;;;;;;;;;;;;;857:1762:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;627:202:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;627:202:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;1100:103:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1100:103:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;946:126:23;1015:7;1053:11;;;;;;;;;;;1038:27;;946:126;:::o;838:92:28:-;719:5:30;;;;;;;;;;;705:19;;:10;:19;;;697:28;;;;;;;;568:6:28;;;;;;;;;;;560:15;;;;;;;;900:5;891:6;;:14;;;;;;;;;;;;;;;;;;916:9;;;;;;;;;;838:92::o;247:26::-;;;;;;;;;;;;;:::o;827:111:30:-;719:5;;;;;;;;;;;705:19;;:10;:19;;;697:28;;;;;;;;903:5;;;;;;;;;;;884:25;;;;;;;;;;;;931:1;915:5;;:18;;;;;;;;;;;;;;;;;;827:111::o;2874:1932:3:-;2989:4;3009:24;3084:20;3151:18;3977:13;3048:11;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3048:25:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3048:25:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3048:25:3;;;;;;;;;;;;;;;;3009:65;;3117:11;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3117:23:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3117:23:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3117:23:3;;;;;;;;;;;;;;;;3084:57;;3181:11;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3181:22:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3181:22:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3181:22:3;;;;;;;;;;;;;;;;3151:53;;3237:11;;;;;;;;;;;:30;;;3268:8;3278:14;3237:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3237:56:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3237:56:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3237:56:3;;;;;;;;;;;;;;;;3223:70;;:10;:70;;;3215:79;;;;;;;;3313:11;;;;;;;;;;;:32;;;3346:8;3356:14;3313:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3313:58:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3313:58:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3313:58:3;;;;;;;;;;;;;;;;3312:59;3304:68;;;;;;;;3404:10;:23;;;3445:11;;;;;;;;;;;:29;;;3475:8;3445:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3445:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3445:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3445:39:3;;;;;;;;;;;;;;;;3502:8;3404:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3404:120:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3404:120:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3404:120:3;;;;;;;;;;;;;;;;3383:151;;;;;;;;3683:11;;;;;;;;;;;:30;;;3714:8;3724:14;3683:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3683:56:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3683:56:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3683:56:3;;;;;;;;;;;;;;;;3561:10;:21;;;3600:11;;;;;;;;;;;:29;;;3630:8;3600:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3600:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3600:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3600:39:3;;;;;;;;;;;;;;;;3657:8;3561:118;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3561:118:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3561:118:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3561:118:3;;;;;;;;;;;;;;;;:178;;3544:230;;;3769:5;3762:12;;;;3544:230;3806:9;:26;;;3850:11;;;;;;;;;;;:28;;;3879:8;3850:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3850:38:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3850:38:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3850:38:3;;;;;;;;;;;;;;;;3906:11;;;;;;;;;;;:27;;;3934:8;3906:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3906:37:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3906:37:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3906:37:3;;;;;;;;;;;;;;;;3806:151;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3806:151:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3806:151:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3806:151:3;;;;;;;;;;;;;;;;3785:182;;;;;;;;4142:11;;;;;;;;;;;:33;;;4176:8;4186:14;4142:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4142:59:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4142:59:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4142:59:3;;;;;;;;;;;;;;;;3993:11;;;;;;;;;;;:32;;;4043:8;4069:11;;;;;;;;;;;:30;;;4100:8;4110:14;4069:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4069:56:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4069:56:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4069:56:3;;;;;;;;;;;;;;;;3993:146;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3993:146:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3993:146:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3993:146:3;;;;;;;;;;;;;;;;:208;;;;;;;;3977:224;;4264:8;4222:11;;;;;;;;;;;:29;;;4252:8;4222:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4222:39:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4222:39:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4222:39:3;;;;;;;;;;;;;;;;:50;;;;;;;;4211:61;;4335:12;:21;;;4374:11;;;;;;;;;;;:31;;;4406:8;4374:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4374:41:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4374:41:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4374:41:3;;;;;;;;;;;;;;;;4433:11;;;;;;;;;;;:31;;;4465:8;4433:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4433:41:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4433:41:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4433:41:3;;;;;;;;;;;;;;;;4500:4;4523:8;4335:210;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4335:210:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4335:210:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4335:210:3;;;;;;;;;;;;;;;;4314:241;;;;;;;;4566:11;;;;;;;;;;;:32;;;4599:8;4609:14;4625:4;4566:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4566:64:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4566:64:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4566:64:3;;;;;;;;;;;;;;;;;4648:11;;;;;;;;;;;:31;;;4680:8;4648:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4648:41:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4648:41:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4648:41:3;;;;;;;;;;;;;;;;4642:57;;;4700:8;4642:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4642:67:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4642:67:3;;;;4746:10;4745:21;;:31;4767:8;4745:31;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4745:31:3;4795:4;4788:11;;2874:1932;;;;;;;;;:::o;666:90:28:-;719:5:30;;;;;;;;;;;705:19;;:10;:19;;;697:28;;;;;;;;416:6:28;;;;;;;;;;;415:7;407:16;;;;;;;;729:4;720:6;;:13;;;;;;;;;;;;;;;;;;744:7;;;;;;;;;;666:90::o;238:20:30:-;;;;;;;;;;;;;:::o;857:1762:3:-;1060:4;1081:22;1157;1234:24;1309:18;2185:22;1106:11;;;;;;;;;;;:31;;;1138:8;1106:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1106:41:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1106:41:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1106:41:3;;;;;;;;;;;;;;;;1081:66;;1182:11;;;;;;;;;;;:31;;;1214:8;1182:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1182:41:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1182:41:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1182:41:3;;;;;;;;;;;;;;;;1157:66;;1273:11;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1273:25:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1273:25:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1273:25:3;;;;;;;;;;;;;;;;1234:65;;1339:11;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1339:22:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1339:22:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1339:22:3;;;;;;;;;;;;;;;;1309:53;;1394:7;1381:9;:20;1373:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1475:1;1465:7;:11;1457:58;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1532:14;1526:29;;;1562:9;1526:48;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1526:48:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1526:48:3;;;;;1599:14;1593:29;;;1631:12;1646:7;1593:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1593:61:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1593:61:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1593:61:3;;;;;;;;;;;;;;;;1585:95;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1712:9;:29;;;1759:11;;;;;;;;;;;:28;;;1788:8;1759:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1759:38:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1759:38:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1759:38:3;;;;;;;;;;;;;;;;1815:11;;;;;;;;;;;:27;;;1843:8;1815:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1815:37:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1815:37:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1815:37:3;;;;;;;;;;;;;;;;1712:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1712:154:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1712:154:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1712:154:3;;;;;;;;;;;;;;;;1691:185;;;;;;;;1908:12;:25;;;1951:14;1983;2023:4;2054:12;2085:7;1908:198;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1908:198:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1908:198:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;1908:198:3;;;;;;;;;;;;;;;;1887:229;;;;;;;;2210:11;;;;;;;;;;;:27;;;2251:8;2273:7;2294;2315;2210:122;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2210:122:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2210:122:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2210:122:3;;;;;;;;;;;;;;;;2185:147;;2374:14;2351:37;;;:19;:37;;;;2343:46;;;;;;;;2400:11;;;;;;;;;;;:29;;;2443:8;2465:7;2400:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2400:82:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2400:82:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2400:82:3;;;;;;;;;;;;;;;;;2493:11;;;;;;;;;;;:23;;;2530:8;2552:7;2573;2493:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2493:97:3;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2493:97:3;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;2493:97:3;;;;;;;;;;;;;;;;;2608:4;2601:11;;857:1762;;;;;;;;;;;;:::o;627:202:23:-;719:5:30;;;;;;;;;;;705:19;;:10;:19;;;697:28;;;;;;;;747:12:23;721:11;;:39;;;;;;;;;;;;;;;;;;784:5;774:15;;:6;;;;;;;;;;;:15;;;770:53;;;805:7;:5;:7::i;:::-;770:53;627:202;:::o;1100:103:30:-;719:5;;;;;;;;;;;705:19;;:10;:19;;;697:28;;;;;;;;1169:29;1188:9;1169:18;:29::i;:::-;1100:103;:::o;1338:171::-;1429:1;1408:23;;:9;:23;;;;1400:32;;;;;;;;1471:9;1443:38;;1464:5;;;;;;;;;;;1443:38;;;;;;;;;;;;1495:9;1487:5;;:17;;;;;;;;;;;;;;;;;;1338:171;:::o",
  "source": "pragma solidity ^0.4.24;\n\n// Internal\nimport \"../ProxyInterfaces/BetKernelProxyInterface.sol\";\nimport \"../RegistrySetter.sol\";\nimport \"../BetPayments.sol\";\nimport \"../BetOracle.sol\";\nimport \"../BetTerms.sol\";\nimport \"../WETH9.sol\";\n\n\n/**\n * A WETH implementation for the kernel used in the Guesser Protocol\n * It has to inherate from the RegistrySetter so it can get called throught\n * a delegate call from the BetPayments contract.\n *\n * Author: Ben Kaufman -- Github: ben-kaufman\n */\n/** @title ETHBetKernelProxy. */\ncontract ETHBetKernelProxy is RegistrySetter, BetKernelProxyInterface {\n\n    /**\n     * @dev Function that places a bet and returns its hash\n     * @param _betHash bytes32 the hash of the bet\n     * @param _option uint the option voted\n     * @param _number uint the amount voted\n     * @return bool the amount of tokens sent\n     */\n    function placeBet(\n        bytes32 _betHash,\n        bytes32 _playerBetHashProof,\n        address _player,\n        uint _option,\n        uint _number\n    )\n        public\n        payable\n        returns(bool)\n    {\n\n        address _paymentsProxy = betRegistry.getBetPaymentsProxy(_betHash);\n        address _paymentsToken = betRegistry.getBetPaymentsToken(_betHash);\n\n        BetPayments _betPayments = BetPayments(betRegistry.betPayments());\n        BetTerms _betTerms = BetTerms(betRegistry.betTerms());\n\n        require(msg.value == _number, \"amount given is different than value sent\");\n        require(_number > 0, \"you must send ether to place a bet\");\n\n        WETH9(_paymentsToken).deposit.value(msg.value)();\n\n        require(WETH9(_paymentsToken).approve(address(_betPayments), _number), \"couldn't approve weth\");\n\n        require(\n            _betTerms.participationPeriod(\n                betRegistry.getBetTermsProxy(_betHash),\n                betRegistry.getBetTermsHash(_betHash)\n            )\n        );\n\n        require(\n            _betPayments.transferFrom(\n                _paymentsProxy,\n                _paymentsToken,\n                address(this),\n                address(_betPayments),\n                _number\n            )\n        );\n\n        // Creating the actual bet and returning the hash\n        bytes32 _playerBetHash = betRegistry.insertPlayerBet(\n            _betHash,\n            _player,\n            _option,\n            _number\n        );\n\n        require(_playerBetHashProof == _playerBetHash);\n\n        betRegistry.addTotalPrincipal(\n            _betHash,\n            _number\n        );\n\n        betRegistry.addToOption(\n            _betHash,\n            _option,\n            _number\n        );\n\n        return true;\n    }\n\n    /**\n     * @dev Function that ask for the profits of a user\n     * @param _betHash bytes32 the hash of the bet\n     * @param _playerBetHash bytes32 the hash of the game bet the player played\n     * @return uint the amount of tokens sent\n     */\n    function getProfits(\n        bytes32 _betHash,\n        bytes32 _playerBetHash\n    )\n        public\n        returns(bool)\n    {\n        BetPayments _betPayments = BetPayments(betRegistry.betPayments());\n        BetOracle _betOracle = BetOracle(betRegistry.betOracle());\n        BetTerms _betTerms = BetTerms(betRegistry.betTerms());\n\n        require(msg.sender == betRegistry.getPlayerBetPlayer(_betHash, _playerBetHash));\n        require(!betRegistry.getPlayerBetReturned(_betHash, _playerBetHash));\n\n        require(\n            _betOracle.outcomeReady(\n                betRegistry.getBetOracleProxy(_betHash),\n                _betHash\n            )\n        );\n        if (\n            _betOracle.getOutcome(\n                betRegistry.getBetOracleProxy(_betHash),\n                _betHash\n            ) != betRegistry.getPlayerBetOption(_betHash, _playerBetHash)\n        )\n            return false;\n\n        require(\n            _betTerms.retrievingPeriod(\n                betRegistry.getBetTermsProxy(_betHash),\n                betRegistry.getBetTermsHash(_betHash)\n            )\n        );\n        uint _profits = betRegistry.getPrincipalInOption(\n                _betHash,\n                betRegistry.getPlayerBetOption(_betHash, _playerBetHash)\n            ) / betRegistry.getPlayerBetPrincipal(_betHash, _playerBetHash);\n        _profits = betRegistry.getTotalPrincipal(_betHash) / _profits;\n\n        // Get the WETH tokens\n        require(\n            _betPayments.transfer(\n                betRegistry.getBetPaymentsProxy(_betHash),\n                betRegistry.getBetPaymentsToken(_betHash),\n                address(this),\n                _profits\n            )\n        );\n\n        betRegistry.setPlayerBetReturned(_betHash, _playerBetHash, true);\n\n\n        WETH9(betRegistry.getBetPaymentsToken(_betHash)).withdraw(_profits);\n        // Return the ETH\n        (msg.sender).transfer(_profits);\n\n\n        return true;\n    }\n}\n",
  "sourcePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/BetKernelProxies/ETHBetKernelProxy.sol",
  "ast": {
    "absolutePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/BetKernelProxies/ETHBetKernelProxy.sol",
    "exportedSymbols": {
      "ETHBetKernelProxy": [
        1217
      ]
    },
    "id": 1218,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 891,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:3"
      },
      {
        "absolutePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/ProxyInterfaces/BetKernelProxyInterface.sol",
        "file": "../ProxyInterfaces/BetKernelProxyInterface.sol",
        "id": 892,
        "nodeType": "ImportDirective",
        "scope": 1218,
        "sourceUnit": 3425,
        "src": "38:56:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/RegistrySetter.sol",
        "file": "../RegistrySetter.sol",
        "id": 893,
        "nodeType": "ImportDirective",
        "scope": 1218,
        "sourceUnit": 3710,
        "src": "95:31:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/BetPayments.sol",
        "file": "../BetPayments.sol",
        "id": 894,
        "nodeType": "ImportDirective",
        "scope": 1218,
        "sourceUnit": 1590,
        "src": "127:28:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/BetOracle.sol",
        "file": "../BetOracle.sol",
        "id": 895,
        "nodeType": "ImportDirective",
        "scope": 1218,
        "sourceUnit": 1266,
        "src": "156:26:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/BetTerms.sol",
        "file": "../BetTerms.sol",
        "id": 896,
        "nodeType": "ImportDirective",
        "scope": 1218,
        "sourceUnit": 2736,
        "src": "183:25:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/WETH9.sol",
        "file": "../WETH9.sol",
        "id": 897,
        "nodeType": "ImportDirective",
        "scope": 1218,
        "sourceUnit": 4095,
        "src": "209:22:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 898,
              "name": "RegistrySetter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3709,
              "src": "549:14:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RegistrySetter_$3709",
                "typeString": "contract RegistrySetter"
              }
            },
            "id": 899,
            "nodeType": "InheritanceSpecifier",
            "src": "549:14:3"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 900,
              "name": "BetKernelProxyInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3424,
              "src": "565:23:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BetKernelProxyInterface_$3424",
                "typeString": "contract BetKernelProxyInterface"
              }
            },
            "id": 901,
            "nodeType": "InheritanceSpecifier",
            "src": "565:23:3"
          }
        ],
        "contractDependencies": [
          3424,
          3709,
          4173,
          4353
        ],
        "contractKind": "contract",
        "documentation": "@title ETHBetKernelProxy. ",
        "fullyImplemented": true,
        "id": 1217,
        "linearizedBaseContracts": [
          1217,
          3424,
          3709,
          4173,
          4353
        ],
        "name": "ETHBetKernelProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1046,
              "nodeType": "Block",
              "src": "1070:1549:3",
              "statements": [
                {
                  "assignments": [
                    917
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 917,
                      "name": "_paymentsProxy",
                      "nodeType": "VariableDeclaration",
                      "scope": 1047,
                      "src": "1081:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 916,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1081:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 922,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 920,
                        "name": "_betHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 903,
                        "src": "1138:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 918,
                        "name": "betRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          3676
                        ],
                        "referencedDeclaration": 3676,
                        "src": "1106:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetRegistry_$2635",
                          "typeString": "contract BetRegistry"
                        }
                      },
                      "id": 919,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getBetPaymentsProxy",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2234,
                      "src": "1106:31:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1106:41:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1081:66:3"
                },
                {
                  "assignments": [
                    924
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 924,
                      "name": "_paymentsToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 1047,
                      "src": "1157:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 923,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1157:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 929,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 927,
                        "name": "_betHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 903,
                        "src": "1214:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 925,
                        "name": "betRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          3676
                        ],
                        "referencedDeclaration": 3676,
                        "src": "1182:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetRegistry_$2635",
                          "typeString": "contract BetRegistry"
                        }
                      },
                      "id": 926,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getBetPaymentsToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2253,
                      "src": "1182:31:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 928,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1182:41:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1157:66:3"
                },
                {
                  "assignments": [
                    931
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 931,
                      "name": "_betPayments",
                      "nodeType": "VariableDeclaration",
                      "scope": 1047,
                      "src": "1234:24:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BetPayments_$1589",
                        "typeString": "contract BetPayments"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 930,
                        "name": "BetPayments",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1589,
                        "src": "1234:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetPayments_$1589",
                          "typeString": "contract BetPayments"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 937,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 933,
                            "name": "betRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3676
                            ],
                            "referencedDeclaration": 3676,
                            "src": "1273:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetRegistry_$2635",
                              "typeString": "contract BetRegistry"
                            }
                          },
                          "id": 934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "betPayments",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3718,
                          "src": "1273:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 935,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1273:25:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 932,
                      "name": "BetPayments",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1589,
                      "src": "1261:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_BetPayments_$1589_$",
                        "typeString": "type(contract BetPayments)"
                      }
                    },
                    "id": 936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1261:38:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BetPayments_$1589",
                      "typeString": "contract BetPayments"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1234:65:3"
                },
                {
                  "assignments": [
                    939
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 939,
                      "name": "_betTerms",
                      "nodeType": "VariableDeclaration",
                      "scope": 1047,
                      "src": "1309:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BetTerms_$2735",
                        "typeString": "contract BetTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 938,
                        "name": "BetTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2735,
                        "src": "1309:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetTerms_$2735",
                          "typeString": "contract BetTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 945,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 941,
                            "name": "betRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3676
                            ],
                            "referencedDeclaration": 3676,
                            "src": "1339:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetRegistry_$2635",
                              "typeString": "contract BetRegistry"
                            }
                          },
                          "id": 942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "betTerms",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3722,
                          "src": "1339:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1339:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 940,
                      "name": "BetTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2735,
                      "src": "1330:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_BetTerms_$2735_$",
                        "typeString": "type(contract BetTerms)"
                      }
                    },
                    "id": 944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1330:32:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BetTerms_$2735",
                      "typeString": "contract BetTerms"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1309:53:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 950,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 947,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6095,
                            "src": "1381:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1381:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 949,
                          "name": "_number",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 911,
                          "src": "1394:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1381:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "616d6f756e7420676976656e20697320646966666572656e74207468616e2076616c75652073656e74",
                        "id": 951,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1403:43:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f86946ae5992508437d579a629b79a595bb8abb7f531278f4194a51ae32654b7",
                          "typeString": "literal_string \"amount given is different than value sent\""
                        },
                        "value": "amount given is different than value sent"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f86946ae5992508437d579a629b79a595bb8abb7f531278f4194a51ae32654b7",
                          "typeString": "literal_string \"amount given is different than value sent\""
                        }
                      ],
                      "id": 946,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6099,
                      "src": "1373:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 952,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1373:74:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 953,
                  "nodeType": "ExpressionStatement",
                  "src": "1373:74:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 957,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 955,
                          "name": "_number",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 911,
                          "src": "1465:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1475:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1465:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "796f75206d7573742073656e6420657468657220746f20706c616365206120626574",
                        "id": 958,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1478:36:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_20733c170e3814e57851631964e56f355d8cb80476704fd0a8f3705e2685fa65",
                          "typeString": "literal_string \"you must send ether to place a bet\""
                        },
                        "value": "you must send ether to place a bet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_20733c170e3814e57851631964e56f355d8cb80476704fd0a8f3705e2685fa65",
                          "typeString": "literal_string \"you must send ether to place a bet\""
                        }
                      ],
                      "id": 954,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6099,
                      "src": "1457:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1457:58:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 960,
                  "nodeType": "ExpressionStatement",
                  "src": "1457:58:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 966,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6095,
                            "src": "1562:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1562:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 962,
                                "name": "_paymentsToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 924,
                                "src": "1532:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 961,
                              "name": "WETH9",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4094,
                              "src": "1526:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_WETH9_$4094_$",
                                "typeString": "type(contract WETH9)"
                              }
                            },
                            "id": 963,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1526:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_WETH9_$4094",
                              "typeString": "contract WETH9"
                            }
                          },
                          "id": 964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "deposit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3925,
                          "src": "1526:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$__$returns$__$",
                            "typeString": "function () payable external"
                          }
                        },
                        "id": 965,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1526:35:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_setvalue_nonpayable$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$",
                          "typeString": "function (uint256) returns (function () payable external)"
                        }
                      },
                      "id": 968,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1526:46:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                        "typeString": "function () payable external"
                      }
                    },
                    "id": 969,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1526:48:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 970,
                  "nodeType": "ExpressionStatement",
                  "src": "1526:48:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 977,
                                "name": "_betPayments",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 931,
                                "src": "1631:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetPayments_$1589",
                                  "typeString": "contract BetPayments"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_BetPayments_$1589",
                                  "typeString": "contract BetPayments"
                                }
                              ],
                              "id": 976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1623:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1623:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 979,
                            "name": "_number",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 911,
                            "src": "1646:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 973,
                                "name": "_paymentsToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 924,
                                "src": "1599:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 972,
                              "name": "WETH9",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4094,
                              "src": "1593:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_WETH9_$4094_$",
                                "typeString": "type(contract WETH9)"
                              }
                            },
                            "id": 974,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1593:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_WETH9_$4094",
                              "typeString": "contract WETH9"
                            }
                          },
                          "id": 975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "approve",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3998,
                          "src": "1593:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 980,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1593:61:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "636f756c646e277420617070726f76652077657468",
                        "id": 981,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1656:23:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1d5a2c7f0ab4ad83760aaff3d3e07f46841910d3f8a56b5664979fd48fed1bff",
                          "typeString": "literal_string \"couldn't approve weth\""
                        },
                        "value": "couldn't approve weth"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1d5a2c7f0ab4ad83760aaff3d3e07f46841910d3f8a56b5664979fd48fed1bff",
                          "typeString": "literal_string \"couldn't approve weth\""
                        }
                      ],
                      "id": 971,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6099,
                      "src": "1585:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1585:95:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 983,
                  "nodeType": "ExpressionStatement",
                  "src": "1585:95:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 989,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 903,
                                "src": "1788:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 987,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "1759:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 988,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetTermsProxy",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2291,
                              "src": "1759:28:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view external returns (address)"
                              }
                            },
                            "id": 990,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1759:38:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 993,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 903,
                                "src": "1843:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 991,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "1815:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetTermsHash",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2310,
                              "src": "1815:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$",
                                "typeString": "function (bytes32) view external returns (bytes32)"
                              }
                            },
                            "id": 994,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1815:37:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 985,
                            "name": "_betTerms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 939,
                            "src": "1712:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetTerms_$2735",
                              "typeString": "contract BetTerms"
                            }
                          },
                          "id": 986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "participationPeriod",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2658,
                          "src": "1712:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1712:154:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 984,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "1691:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 996,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1691:185:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 997,
                  "nodeType": "ExpressionStatement",
                  "src": "1691:185:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1001,
                            "name": "_paymentsProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 917,
                            "src": "1951:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1002,
                            "name": "_paymentsToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 924,
                            "src": "1983:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1004,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6156,
                                "src": "2023:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ETHBetKernelProxy_$1217",
                                  "typeString": "contract ETHBetKernelProxy"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ETHBetKernelProxy_$1217",
                                  "typeString": "contract ETHBetKernelProxy"
                                }
                              ],
                              "id": 1003,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2015:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 1005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2015:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1007,
                                "name": "_betPayments",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 931,
                                "src": "2054:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetPayments_$1589",
                                  "typeString": "contract BetPayments"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_BetPayments_$1589",
                                  "typeString": "contract BetPayments"
                                }
                              ],
                              "id": 1006,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2046:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 1008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2046:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1009,
                            "name": "_number",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 911,
                            "src": "2085:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 999,
                            "name": "_betPayments",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 931,
                            "src": "1908:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetPayments_$1589",
                              "typeString": "contract BetPayments"
                            }
                          },
                          "id": 1000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1529,
                          "src": "1908:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 1010,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1908:198:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 998,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "1887:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1887:229:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1012,
                  "nodeType": "ExpressionStatement",
                  "src": "1887:229:3"
                },
                {
                  "assignments": [
                    1014
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1014,
                      "name": "_playerBetHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1047,
                      "src": "2185:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1013,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2185:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1022,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1017,
                        "name": "_betHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 903,
                        "src": "2251:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1018,
                        "name": "_player",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 907,
                        "src": "2273:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1019,
                        "name": "_option",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 909,
                        "src": "2294:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1020,
                        "name": "_number",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 911,
                        "src": "2315:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1015,
                        "name": "betRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          3676
                        ],
                        "referencedDeclaration": 3676,
                        "src": "2210:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetRegistry_$2635",
                          "typeString": "contract BetRegistry"
                        }
                      },
                      "id": 1016,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "insertPlayerBet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2073,
                      "src": "2210:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32,address,uint256,uint256) external returns (bytes32)"
                      }
                    },
                    "id": 1021,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2210:122:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2185:147:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 1026,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1024,
                          "name": "_playerBetHashProof",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 905,
                          "src": "2351:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1025,
                          "name": "_playerBetHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1014,
                          "src": "2374:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2351:37:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1023,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "2343:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1027,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2343:46:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1028,
                  "nodeType": "ExpressionStatement",
                  "src": "2343:46:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1032,
                        "name": "_betHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 903,
                        "src": "2443:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1033,
                        "name": "_number",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 911,
                        "src": "2465:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1029,
                        "name": "betRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          3676
                        ],
                        "referencedDeclaration": 3676,
                        "src": "2400:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetRegistry_$2635",
                          "typeString": "contract BetRegistry"
                        }
                      },
                      "id": 1031,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addTotalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2108,
                      "src": "2400:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes32,uint256) external returns (uint256)"
                      }
                    },
                    "id": 1034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2400:82:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1035,
                  "nodeType": "ExpressionStatement",
                  "src": "2400:82:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1039,
                        "name": "_betHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 903,
                        "src": "2530:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1040,
                        "name": "_option",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 909,
                        "src": "2552:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1041,
                        "name": "_number",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 911,
                        "src": "2573:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1036,
                        "name": "betRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          3676
                        ],
                        "referencedDeclaration": 3676,
                        "src": "2493:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetRegistry_$2635",
                          "typeString": "contract BetRegistry"
                        }
                      },
                      "id": 1038,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addToOption",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2149,
                      "src": "2493:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes32,uint256,uint256) external returns (uint256)"
                      }
                    },
                    "id": 1042,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2493:97:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1043,
                  "nodeType": "ExpressionStatement",
                  "src": "2493:97:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 1044,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2608:4:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 915,
                  "id": 1045,
                  "nodeType": "Return",
                  "src": "2601:11:3"
                }
              ]
            },
            "documentation": "@dev Function that places a bet and returns its hash\n@param _betHash bytes32 the hash of the bet\n@param _option uint the option voted\n@param _number uint the amount voted\n@return bool the amount of tokens sent",
            "id": 1047,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "placeBet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 912,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 903,
                  "name": "_betHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 1047,
                  "src": "884:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 902,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "884:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 905,
                  "name": "_playerBetHashProof",
                  "nodeType": "VariableDeclaration",
                  "scope": 1047,
                  "src": "910:27:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 904,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "910:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 907,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 1047,
                  "src": "947:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 906,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "947:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 909,
                  "name": "_option",
                  "nodeType": "VariableDeclaration",
                  "scope": 1047,
                  "src": "972:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 908,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "972:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 911,
                  "name": "_number",
                  "nodeType": "VariableDeclaration",
                  "scope": 1047,
                  "src": "994:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 910,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "994:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "874:138:3"
            },
            "payable": true,
            "returnParameters": {
              "id": 915,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 914,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1047,
                  "src": "1060:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 913,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1060:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1059:6:3"
            },
            "scope": 1217,
            "src": "857:1762:3",
            "stateMutability": "payable",
            "superFunction": 3414,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1215,
              "nodeType": "Block",
              "src": "2999:1807:3",
              "statements": [
                {
                  "assignments": [
                    1057
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1057,
                      "name": "_betPayments",
                      "nodeType": "VariableDeclaration",
                      "scope": 1216,
                      "src": "3009:24:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BetPayments_$1589",
                        "typeString": "contract BetPayments"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1056,
                        "name": "BetPayments",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1589,
                        "src": "3009:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetPayments_$1589",
                          "typeString": "contract BetPayments"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1063,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1059,
                            "name": "betRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3676
                            ],
                            "referencedDeclaration": 3676,
                            "src": "3048:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetRegistry_$2635",
                              "typeString": "contract BetRegistry"
                            }
                          },
                          "id": 1060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "betPayments",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3718,
                          "src": "3048:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 1061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3048:25:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1058,
                      "name": "BetPayments",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1589,
                      "src": "3036:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_BetPayments_$1589_$",
                        "typeString": "type(contract BetPayments)"
                      }
                    },
                    "id": 1062,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3036:38:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BetPayments_$1589",
                      "typeString": "contract BetPayments"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3009:65:3"
                },
                {
                  "assignments": [
                    1065
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1065,
                      "name": "_betOracle",
                      "nodeType": "VariableDeclaration",
                      "scope": 1216,
                      "src": "3084:20:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BetOracle_$1265",
                        "typeString": "contract BetOracle"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1064,
                        "name": "BetOracle",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1265,
                        "src": "3084:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetOracle_$1265",
                          "typeString": "contract BetOracle"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1071,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1067,
                            "name": "betRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3676
                            ],
                            "referencedDeclaration": 3676,
                            "src": "3117:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetRegistry_$2635",
                              "typeString": "contract BetRegistry"
                            }
                          },
                          "id": 1068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "betOracle",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3720,
                          "src": "3117:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 1069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3117:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1066,
                      "name": "BetOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1265,
                      "src": "3107:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_BetOracle_$1265_$",
                        "typeString": "type(contract BetOracle)"
                      }
                    },
                    "id": 1070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3107:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BetOracle_$1265",
                      "typeString": "contract BetOracle"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3084:57:3"
                },
                {
                  "assignments": [
                    1073
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1073,
                      "name": "_betTerms",
                      "nodeType": "VariableDeclaration",
                      "scope": 1216,
                      "src": "3151:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BetTerms_$2735",
                        "typeString": "contract BetTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1072,
                        "name": "BetTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2735,
                        "src": "3151:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetTerms_$2735",
                          "typeString": "contract BetTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1079,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1075,
                            "name": "betRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3676
                            ],
                            "referencedDeclaration": 3676,
                            "src": "3181:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetRegistry_$2635",
                              "typeString": "contract BetRegistry"
                            }
                          },
                          "id": 1076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "betTerms",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3722,
                          "src": "3181:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 1077,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3181:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1074,
                      "name": "BetTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2735,
                      "src": "3172:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_BetTerms_$2735_$",
                        "typeString": "type(contract BetTerms)"
                      }
                    },
                    "id": 1078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3172:32:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BetTerms_$2735",
                      "typeString": "contract BetTerms"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3151:53:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1088,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1081,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6095,
                            "src": "3223:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3223:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1085,
                              "name": "_betHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1049,
                              "src": "3268:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1086,
                              "name": "_playerBetHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1051,
                              "src": "3278:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1083,
                              "name": "betRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                3676
                              ],
                              "referencedDeclaration": 3676,
                              "src": "3237:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                "typeString": "contract BetRegistry"
                              }
                            },
                            "id": 1084,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPlayerBetPlayer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2445,
                            "src": "3237:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32,bytes32) view external returns (address)"
                            }
                          },
                          "id": 1087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3237:56:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3223:70:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1080,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "3215:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3215:79:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1090,
                  "nodeType": "ExpressionStatement",
                  "src": "3215:79:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1097,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3312:59:3",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1094,
                              "name": "_betHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1049,
                              "src": "3346:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1095,
                              "name": "_playerBetHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1051,
                              "src": "3356:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1092,
                              "name": "betRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                3676
                              ],
                              "referencedDeclaration": 3676,
                              "src": "3313:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                "typeString": "contract BetRegistry"
                              }
                            },
                            "id": 1093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPlayerBetReturned",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2520,
                            "src": "3313:32:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32,bytes32) view external returns (bool)"
                            }
                          },
                          "id": 1096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3313:58:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1091,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "3304:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1098,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3304:68:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1099,
                  "nodeType": "ExpressionStatement",
                  "src": "3304:68:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1105,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1049,
                                "src": "3475:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1103,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "3445:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 1104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetOracleProxy",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2272,
                              "src": "3445:29:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view external returns (address)"
                              }
                            },
                            "id": 1106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3445:39:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1107,
                            "name": "_betHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1049,
                            "src": "3502:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1101,
                            "name": "_betOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1065,
                            "src": "3404:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetOracle_$1265",
                              "typeString": "contract BetOracle"
                            }
                          },
                          "id": 1102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outcomeReady",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1240,
                          "src": "3404:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 1108,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3404:120:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1100,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "3383:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1109,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3383:151:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1110,
                  "nodeType": "ExpressionStatement",
                  "src": "3383:151:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1115,
                              "name": "_betHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1049,
                              "src": "3630:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1113,
                              "name": "betRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                3676
                              ],
                              "referencedDeclaration": 3676,
                              "src": "3600:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                "typeString": "contract BetRegistry"
                              }
                            },
                            "id": 1114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getBetOracleProxy",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2272,
                            "src": "3600:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 1116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3600:39:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1117,
                          "name": "_betHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1049,
                          "src": "3657:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1111,
                          "name": "_betOracle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1065,
                          "src": "3561:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BetOracle_$1265",
                            "typeString": "contract BetOracle"
                          }
                        },
                        "id": 1112,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getOutcome",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1264,
                        "src": "3561:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_uint256_$",
                          "typeString": "function (address,bytes32) view external returns (uint256)"
                        }
                      },
                      "id": 1118,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3561:118:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1121,
                          "name": "_betHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1049,
                          "src": "3714:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1122,
                          "name": "_playerBetHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1051,
                          "src": "3724:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1119,
                          "name": "betRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3676
                          ],
                          "referencedDeclaration": 3676,
                          "src": "3683:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BetRegistry_$2635",
                            "typeString": "contract BetRegistry"
                          }
                        },
                        "id": 1120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getPlayerBetOption",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2470,
                        "src": "3683:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                          "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                        }
                      },
                      "id": 1123,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3683:56:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3561:178:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1127,
                  "nodeType": "IfStatement",
                  "src": "3544:230:3",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 1125,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3769:5:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "functionReturnParameters": 1055,
                    "id": 1126,
                    "nodeType": "Return",
                    "src": "3762:12:3"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1133,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1049,
                                "src": "3879:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1131,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "3850:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 1132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetTermsProxy",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2291,
                              "src": "3850:28:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view external returns (address)"
                              }
                            },
                            "id": 1134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3850:38:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1137,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1049,
                                "src": "3934:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1135,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "3906:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 1136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetTermsHash",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2310,
                              "src": "3906:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$",
                                "typeString": "function (bytes32) view external returns (bytes32)"
                              }
                            },
                            "id": 1138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3906:37:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1129,
                            "name": "_betTerms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1073,
                            "src": "3806:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetTerms_$2735",
                              "typeString": "contract BetTerms"
                            }
                          },
                          "id": 1130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "retrievingPeriod",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2692,
                          "src": "3806:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 1139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3806:151:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1128,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "3785:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3785:182:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1141,
                  "nodeType": "ExpressionStatement",
                  "src": "3785:182:3"
                },
                {
                  "assignments": [
                    1143
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1143,
                      "name": "_profits",
                      "nodeType": "VariableDeclaration",
                      "scope": 1216,
                      "src": "3977:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1142,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3977:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1159,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1158,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1146,
                          "name": "_betHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1049,
                          "src": "4043:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1149,
                              "name": "_betHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1049,
                              "src": "4100:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1150,
                              "name": "_playerBetHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1051,
                              "src": "4110:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1147,
                              "name": "betRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                3676
                              ],
                              "referencedDeclaration": 3676,
                              "src": "4069:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                "typeString": "contract BetRegistry"
                              }
                            },
                            "id": 1148,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPlayerBetOption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2470,
                            "src": "4069:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                            }
                          },
                          "id": 1151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4069:56:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1144,
                          "name": "betRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3676
                          ],
                          "referencedDeclaration": 3676,
                          "src": "3993:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BetRegistry_$2635",
                            "typeString": "contract BetRegistry"
                          }
                        },
                        "id": 1145,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getPrincipalInOption",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2403,
                        "src": "3993:32:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (bytes32,uint256) view external returns (uint256)"
                        }
                      },
                      "id": 1152,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3993:146:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1155,
                          "name": "_betHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1049,
                          "src": "4176:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1156,
                          "name": "_playerBetHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1051,
                          "src": "4186:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1153,
                          "name": "betRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3676
                          ],
                          "referencedDeclaration": 3676,
                          "src": "4142:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BetRegistry_$2635",
                            "typeString": "contract BetRegistry"
                          }
                        },
                        "id": 1154,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getPlayerBetPrincipal",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2495,
                        "src": "4142:33:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                          "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                        }
                      },
                      "id": 1157,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4142:59:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3993:208:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3977:224:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1160,
                      "name": "_profits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1143,
                      "src": "4211:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1163,
                            "name": "_betHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1049,
                            "src": "4252:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1161,
                            "name": "betRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3676
                            ],
                            "referencedDeclaration": 3676,
                            "src": "4222:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetRegistry_$2635",
                              "typeString": "contract BetRegistry"
                            }
                          },
                          "id": 1162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getTotalPrincipal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2380,
                          "src": "4222:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view external returns (uint256)"
                          }
                        },
                        "id": 1164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4222:39:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1165,
                        "name": "_profits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1143,
                        "src": "4264:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4222:50:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4211:61:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1168,
                  "nodeType": "ExpressionStatement",
                  "src": "4211:61:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1174,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1049,
                                "src": "4406:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1172,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "4374:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 1173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetPaymentsProxy",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2234,
                              "src": "4374:31:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view external returns (address)"
                              }
                            },
                            "id": 1175,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4374:41:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1178,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1049,
                                "src": "4465:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1176,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "4433:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 1177,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetPaymentsToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2253,
                              "src": "4433:31:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view external returns (address)"
                              }
                            },
                            "id": 1179,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4433:41:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1181,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6156,
                                "src": "4500:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ETHBetKernelProxy_$1217",
                                  "typeString": "contract ETHBetKernelProxy"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ETHBetKernelProxy_$1217",
                                  "typeString": "contract ETHBetKernelProxy"
                                }
                              ],
                              "id": 1180,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4492:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 1182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4492:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1183,
                            "name": "_profits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1143,
                            "src": "4523:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1170,
                            "name": "_betPayments",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1057,
                            "src": "4335:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetPayments_$1589",
                              "typeString": "contract BetPayments"
                            }
                          },
                          "id": 1171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1568,
                          "src": "4335:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 1184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4335:210:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1169,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "4314:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4314:241:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1186,
                  "nodeType": "ExpressionStatement",
                  "src": "4314:241:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1190,
                        "name": "_betHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1049,
                        "src": "4599:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1191,
                        "name": "_playerBetHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1051,
                        "src": "4609:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 1192,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4625:4:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1187,
                        "name": "betRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          3676
                        ],
                        "referencedDeclaration": 3676,
                        "src": "4566:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetRegistry_$2635",
                          "typeString": "contract BetRegistry"
                        }
                      },
                      "id": 1189,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setPlayerBetReturned",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2606,
                      "src": "4566:32:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_bool_$returns$_t_bool_$",
                        "typeString": "function (bytes32,bytes32,bool) external returns (bool)"
                      }
                    },
                    "id": 1193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4566:64:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1194,
                  "nodeType": "ExpressionStatement",
                  "src": "4566:64:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1202,
                        "name": "_profits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1143,
                        "src": "4700:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1198,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1049,
                                "src": "4680:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1196,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "4648:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 1197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetPaymentsToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2253,
                              "src": "4648:31:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view external returns (address)"
                              }
                            },
                            "id": 1199,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4648:41:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1195,
                          "name": "WETH9",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4094,
                          "src": "4642:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_WETH9_$4094_$",
                            "typeString": "type(contract WETH9)"
                          }
                        },
                        "id": 1200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4642:48:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_WETH9_$4094",
                          "typeString": "contract WETH9"
                        }
                      },
                      "id": 1201,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3961,
                      "src": "4642:57:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 1203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4642:67:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1204,
                  "nodeType": "ExpressionStatement",
                  "src": "4642:67:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1210,
                        "name": "_profits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1143,
                        "src": "4767:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1205,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6095,
                              "src": "4746:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4746:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "id": 1208,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4745:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1209,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4745:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4745:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1212,
                  "nodeType": "ExpressionStatement",
                  "src": "4745:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 1213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4795:4:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 1055,
                  "id": 1214,
                  "nodeType": "Return",
                  "src": "4788:11:3"
                }
              ]
            },
            "documentation": "@dev Function that ask for the profits of a user\n@param _betHash bytes32 the hash of the bet\n@param _playerBetHash bytes32 the hash of the game bet the player played\n@return uint the amount of tokens sent",
            "id": 1216,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "getProfits",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1052,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1049,
                  "name": "_betHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 1216,
                  "src": "2903:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1048,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2903:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1051,
                  "name": "_playerBetHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 1216,
                  "src": "2929:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1050,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2929:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2893:64:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 1055,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1054,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1216,
                  "src": "2989:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1053,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2989:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2988:6:3"
            },
            "scope": 1217,
            "src": "2874:1932:3",
            "stateMutability": "nonpayable",
            "superFunction": 3423,
            "visibility": "public"
          }
        ],
        "scope": 1218,
        "src": "519:4289:3"
      }
    ],
    "src": "0:4809:3"
  },
  "legacyAST": {
    "absolutePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/BetKernelProxies/ETHBetKernelProxy.sol",
    "exportedSymbols": {
      "ETHBetKernelProxy": [
        1217
      ]
    },
    "id": 1218,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 891,
        "literals": [
          "solidity",
          "^",
          "0.4",
          ".24"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:24:3"
      },
      {
        "absolutePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/ProxyInterfaces/BetKernelProxyInterface.sol",
        "file": "../ProxyInterfaces/BetKernelProxyInterface.sol",
        "id": 892,
        "nodeType": "ImportDirective",
        "scope": 1218,
        "sourceUnit": 3425,
        "src": "38:56:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/RegistrySetter.sol",
        "file": "../RegistrySetter.sol",
        "id": 893,
        "nodeType": "ImportDirective",
        "scope": 1218,
        "sourceUnit": 3710,
        "src": "95:31:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/BetPayments.sol",
        "file": "../BetPayments.sol",
        "id": 894,
        "nodeType": "ImportDirective",
        "scope": 1218,
        "sourceUnit": 1590,
        "src": "127:28:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/BetOracle.sol",
        "file": "../BetOracle.sol",
        "id": 895,
        "nodeType": "ImportDirective",
        "scope": 1218,
        "sourceUnit": 1266,
        "src": "156:26:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/BetTerms.sol",
        "file": "../BetTerms.sol",
        "id": 896,
        "nodeType": "ImportDirective",
        "scope": 1218,
        "sourceUnit": 2736,
        "src": "183:25:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/carlosgonzalezjuarez/Documents/Development/GuesserProtocol/contracts/WETH9.sol",
        "file": "../WETH9.sol",
        "id": 897,
        "nodeType": "ImportDirective",
        "scope": 1218,
        "sourceUnit": 4095,
        "src": "209:22:3",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 898,
              "name": "RegistrySetter",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3709,
              "src": "549:14:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_RegistrySetter_$3709",
                "typeString": "contract RegistrySetter"
              }
            },
            "id": 899,
            "nodeType": "InheritanceSpecifier",
            "src": "549:14:3"
          },
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 900,
              "name": "BetKernelProxyInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3424,
              "src": "565:23:3",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_BetKernelProxyInterface_$3424",
                "typeString": "contract BetKernelProxyInterface"
              }
            },
            "id": 901,
            "nodeType": "InheritanceSpecifier",
            "src": "565:23:3"
          }
        ],
        "contractDependencies": [
          3424,
          3709,
          4173,
          4353
        ],
        "contractKind": "contract",
        "documentation": "@title ETHBetKernelProxy. ",
        "fullyImplemented": true,
        "id": 1217,
        "linearizedBaseContracts": [
          1217,
          3424,
          3709,
          4173,
          4353
        ],
        "name": "ETHBetKernelProxy",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "body": {
              "id": 1046,
              "nodeType": "Block",
              "src": "1070:1549:3",
              "statements": [
                {
                  "assignments": [
                    917
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 917,
                      "name": "_paymentsProxy",
                      "nodeType": "VariableDeclaration",
                      "scope": 1047,
                      "src": "1081:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 916,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1081:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 922,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 920,
                        "name": "_betHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 903,
                        "src": "1138:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 918,
                        "name": "betRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          3676
                        ],
                        "referencedDeclaration": 3676,
                        "src": "1106:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetRegistry_$2635",
                          "typeString": "contract BetRegistry"
                        }
                      },
                      "id": 919,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getBetPaymentsProxy",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2234,
                      "src": "1106:31:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 921,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1106:41:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1081:66:3"
                },
                {
                  "assignments": [
                    924
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 924,
                      "name": "_paymentsToken",
                      "nodeType": "VariableDeclaration",
                      "scope": 1047,
                      "src": "1157:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 923,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1157:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 929,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 927,
                        "name": "_betHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 903,
                        "src": "1214:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 925,
                        "name": "betRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          3676
                        ],
                        "referencedDeclaration": 3676,
                        "src": "1182:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetRegistry_$2635",
                          "typeString": "contract BetRegistry"
                        }
                      },
                      "id": 926,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getBetPaymentsToken",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2253,
                      "src": "1182:31:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                        "typeString": "function (bytes32) view external returns (address)"
                      }
                    },
                    "id": 928,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1182:41:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1157:66:3"
                },
                {
                  "assignments": [
                    931
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 931,
                      "name": "_betPayments",
                      "nodeType": "VariableDeclaration",
                      "scope": 1047,
                      "src": "1234:24:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BetPayments_$1589",
                        "typeString": "contract BetPayments"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 930,
                        "name": "BetPayments",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1589,
                        "src": "1234:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetPayments_$1589",
                          "typeString": "contract BetPayments"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 937,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 933,
                            "name": "betRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3676
                            ],
                            "referencedDeclaration": 3676,
                            "src": "1273:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetRegistry_$2635",
                              "typeString": "contract BetRegistry"
                            }
                          },
                          "id": 934,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "betPayments",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3718,
                          "src": "1273:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 935,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1273:25:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 932,
                      "name": "BetPayments",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1589,
                      "src": "1261:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_BetPayments_$1589_$",
                        "typeString": "type(contract BetPayments)"
                      }
                    },
                    "id": 936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1261:38:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BetPayments_$1589",
                      "typeString": "contract BetPayments"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1234:65:3"
                },
                {
                  "assignments": [
                    939
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 939,
                      "name": "_betTerms",
                      "nodeType": "VariableDeclaration",
                      "scope": 1047,
                      "src": "1309:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BetTerms_$2735",
                        "typeString": "contract BetTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 938,
                        "name": "BetTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2735,
                        "src": "1309:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetTerms_$2735",
                          "typeString": "contract BetTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 945,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 941,
                            "name": "betRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3676
                            ],
                            "referencedDeclaration": 3676,
                            "src": "1339:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetRegistry_$2635",
                              "typeString": "contract BetRegistry"
                            }
                          },
                          "id": 942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "betTerms",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3722,
                          "src": "1339:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1339:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 940,
                      "name": "BetTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2735,
                      "src": "1330:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_BetTerms_$2735_$",
                        "typeString": "type(contract BetTerms)"
                      }
                    },
                    "id": 944,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1330:32:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BetTerms_$2735",
                      "typeString": "contract BetTerms"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "1309:53:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 950,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 947,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6095,
                            "src": "1381:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 948,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1381:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 949,
                          "name": "_number",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 911,
                          "src": "1394:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1381:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "616d6f756e7420676976656e20697320646966666572656e74207468616e2076616c75652073656e74",
                        "id": 951,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1403:43:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_f86946ae5992508437d579a629b79a595bb8abb7f531278f4194a51ae32654b7",
                          "typeString": "literal_string \"amount given is different than value sent\""
                        },
                        "value": "amount given is different than value sent"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_f86946ae5992508437d579a629b79a595bb8abb7f531278f4194a51ae32654b7",
                          "typeString": "literal_string \"amount given is different than value sent\""
                        }
                      ],
                      "id": 946,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6099,
                      "src": "1373:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 952,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1373:74:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 953,
                  "nodeType": "ExpressionStatement",
                  "src": "1373:74:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 957,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 955,
                          "name": "_number",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 911,
                          "src": "1465:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 956,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1475:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "1465:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "796f75206d7573742073656e6420657468657220746f20706c616365206120626574",
                        "id": 958,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1478:36:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_20733c170e3814e57851631964e56f355d8cb80476704fd0a8f3705e2685fa65",
                          "typeString": "literal_string \"you must send ether to place a bet\""
                        },
                        "value": "you must send ether to place a bet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_20733c170e3814e57851631964e56f355d8cb80476704fd0a8f3705e2685fa65",
                          "typeString": "literal_string \"you must send ether to place a bet\""
                        }
                      ],
                      "id": 954,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6099,
                      "src": "1457:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 959,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1457:58:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 960,
                  "nodeType": "ExpressionStatement",
                  "src": "1457:58:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [],
                    "expression": {
                      "argumentTypes": [],
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 966,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6095,
                            "src": "1562:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 967,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1562:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 962,
                                "name": "_paymentsToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 924,
                                "src": "1532:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 961,
                              "name": "WETH9",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4094,
                              "src": "1526:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_WETH9_$4094_$",
                                "typeString": "type(contract WETH9)"
                              }
                            },
                            "id": 963,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1526:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_WETH9_$4094",
                              "typeString": "contract WETH9"
                            }
                          },
                          "id": 964,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "deposit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3925,
                          "src": "1526:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$__$returns$__$",
                            "typeString": "function () payable external"
                          }
                        },
                        "id": 965,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1526:35:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_setvalue_nonpayable$_t_uint256_$returns$_t_function_external_payable$__$returns$__$value_$",
                          "typeString": "function (uint256) returns (function () payable external)"
                        }
                      },
                      "id": 968,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "1526:46:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                        "typeString": "function () payable external"
                      }
                    },
                    "id": 969,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1526:48:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 970,
                  "nodeType": "ExpressionStatement",
                  "src": "1526:48:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 977,
                                "name": "_betPayments",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 931,
                                "src": "1631:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetPayments_$1589",
                                  "typeString": "contract BetPayments"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_BetPayments_$1589",
                                  "typeString": "contract BetPayments"
                                }
                              ],
                              "id": 976,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1623:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 978,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1623:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 979,
                            "name": "_number",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 911,
                            "src": "1646:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 973,
                                "name": "_paymentsToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 924,
                                "src": "1599:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 972,
                              "name": "WETH9",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4094,
                              "src": "1593:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_WETH9_$4094_$",
                                "typeString": "type(contract WETH9)"
                              }
                            },
                            "id": 974,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1593:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_WETH9_$4094",
                              "typeString": "contract WETH9"
                            }
                          },
                          "id": 975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "approve",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3998,
                          "src": "1593:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 980,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1593:61:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "636f756c646e277420617070726f76652077657468",
                        "id": 981,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1656:23:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_1d5a2c7f0ab4ad83760aaff3d3e07f46841910d3f8a56b5664979fd48fed1bff",
                          "typeString": "literal_string \"couldn't approve weth\""
                        },
                        "value": "couldn't approve weth"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_1d5a2c7f0ab4ad83760aaff3d3e07f46841910d3f8a56b5664979fd48fed1bff",
                          "typeString": "literal_string \"couldn't approve weth\""
                        }
                      ],
                      "id": 971,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6099,
                      "src": "1585:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 982,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1585:95:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 983,
                  "nodeType": "ExpressionStatement",
                  "src": "1585:95:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 989,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 903,
                                "src": "1788:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 987,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "1759:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 988,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetTermsProxy",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2291,
                              "src": "1759:28:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view external returns (address)"
                              }
                            },
                            "id": 990,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1759:38:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 993,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 903,
                                "src": "1843:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 991,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "1815:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 992,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetTermsHash",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2310,
                              "src": "1815:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$",
                                "typeString": "function (bytes32) view external returns (bytes32)"
                              }
                            },
                            "id": 994,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1815:37:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 985,
                            "name": "_betTerms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 939,
                            "src": "1712:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetTerms_$2735",
                              "typeString": "contract BetTerms"
                            }
                          },
                          "id": 986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "participationPeriod",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2658,
                          "src": "1712:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 995,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1712:154:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 984,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "1691:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 996,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1691:185:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 997,
                  "nodeType": "ExpressionStatement",
                  "src": "1691:185:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1001,
                            "name": "_paymentsProxy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 917,
                            "src": "1951:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1002,
                            "name": "_paymentsToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 924,
                            "src": "1983:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1004,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6156,
                                "src": "2023:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ETHBetKernelProxy_$1217",
                                  "typeString": "contract ETHBetKernelProxy"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ETHBetKernelProxy_$1217",
                                  "typeString": "contract ETHBetKernelProxy"
                                }
                              ],
                              "id": 1003,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2015:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 1005,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2015:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1007,
                                "name": "_betPayments",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 931,
                                "src": "2054:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetPayments_$1589",
                                  "typeString": "contract BetPayments"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_BetPayments_$1589",
                                  "typeString": "contract BetPayments"
                                }
                              ],
                              "id": 1006,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2046:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 1008,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2046:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1009,
                            "name": "_number",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 911,
                            "src": "2085:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 999,
                            "name": "_betPayments",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 931,
                            "src": "1908:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetPayments_$1589",
                              "typeString": "contract BetPayments"
                            }
                          },
                          "id": 1000,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1529,
                          "src": "1908:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 1010,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1908:198:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 998,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "1887:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1011,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1887:229:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1012,
                  "nodeType": "ExpressionStatement",
                  "src": "1887:229:3"
                },
                {
                  "assignments": [
                    1014
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1014,
                      "name": "_playerBetHash",
                      "nodeType": "VariableDeclaration",
                      "scope": 1047,
                      "src": "2185:22:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 1013,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2185:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1022,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1017,
                        "name": "_betHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 903,
                        "src": "2251:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1018,
                        "name": "_player",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 907,
                        "src": "2273:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1019,
                        "name": "_option",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 909,
                        "src": "2294:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1020,
                        "name": "_number",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 911,
                        "src": "2315:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1015,
                        "name": "betRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          3676
                        ],
                        "referencedDeclaration": 3676,
                        "src": "2210:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetRegistry_$2635",
                          "typeString": "contract BetRegistry"
                        }
                      },
                      "id": 1016,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "insertPlayerBet",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2073,
                      "src": "2210:27:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bytes32_$",
                        "typeString": "function (bytes32,address,uint256,uint256) external returns (bytes32)"
                      }
                    },
                    "id": 1021,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2210:122:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2185:147:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 1026,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1024,
                          "name": "_playerBetHashProof",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 905,
                          "src": "2351:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1025,
                          "name": "_playerBetHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1014,
                          "src": "2374:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "2351:37:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1023,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "2343:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1027,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2343:46:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1028,
                  "nodeType": "ExpressionStatement",
                  "src": "2343:46:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1032,
                        "name": "_betHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 903,
                        "src": "2443:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1033,
                        "name": "_number",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 911,
                        "src": "2465:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1029,
                        "name": "betRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          3676
                        ],
                        "referencedDeclaration": 3676,
                        "src": "2400:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetRegistry_$2635",
                          "typeString": "contract BetRegistry"
                        }
                      },
                      "id": 1031,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addTotalPrincipal",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2108,
                      "src": "2400:29:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes32,uint256) external returns (uint256)"
                      }
                    },
                    "id": 1034,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2400:82:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1035,
                  "nodeType": "ExpressionStatement",
                  "src": "2400:82:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1039,
                        "name": "_betHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 903,
                        "src": "2530:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1040,
                        "name": "_option",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 909,
                        "src": "2552:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1041,
                        "name": "_number",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 911,
                        "src": "2573:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1036,
                        "name": "betRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          3676
                        ],
                        "referencedDeclaration": 3676,
                        "src": "2493:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetRegistry_$2635",
                          "typeString": "contract BetRegistry"
                        }
                      },
                      "id": 1038,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "addToOption",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2149,
                      "src": "2493:23:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                        "typeString": "function (bytes32,uint256,uint256) external returns (uint256)"
                      }
                    },
                    "id": 1042,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2493:97:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1043,
                  "nodeType": "ExpressionStatement",
                  "src": "2493:97:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 1044,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "2608:4:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 915,
                  "id": 1045,
                  "nodeType": "Return",
                  "src": "2601:11:3"
                }
              ]
            },
            "documentation": "@dev Function that places a bet and returns its hash\n@param _betHash bytes32 the hash of the bet\n@param _option uint the option voted\n@param _number uint the amount voted\n@return bool the amount of tokens sent",
            "id": 1047,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "placeBet",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 912,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 903,
                  "name": "_betHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 1047,
                  "src": "884:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 902,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "884:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 905,
                  "name": "_playerBetHashProof",
                  "nodeType": "VariableDeclaration",
                  "scope": 1047,
                  "src": "910:27:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 904,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "910:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 907,
                  "name": "_player",
                  "nodeType": "VariableDeclaration",
                  "scope": 1047,
                  "src": "947:15:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 906,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "947:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 909,
                  "name": "_option",
                  "nodeType": "VariableDeclaration",
                  "scope": 1047,
                  "src": "972:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 908,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "972:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 911,
                  "name": "_number",
                  "nodeType": "VariableDeclaration",
                  "scope": 1047,
                  "src": "994:12:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 910,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "994:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "874:138:3"
            },
            "payable": true,
            "returnParameters": {
              "id": 915,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 914,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1047,
                  "src": "1060:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 913,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1060:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1059:6:3"
            },
            "scope": 1217,
            "src": "857:1762:3",
            "stateMutability": "payable",
            "superFunction": 3414,
            "visibility": "public"
          },
          {
            "body": {
              "id": 1215,
              "nodeType": "Block",
              "src": "2999:1807:3",
              "statements": [
                {
                  "assignments": [
                    1057
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1057,
                      "name": "_betPayments",
                      "nodeType": "VariableDeclaration",
                      "scope": 1216,
                      "src": "3009:24:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BetPayments_$1589",
                        "typeString": "contract BetPayments"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1056,
                        "name": "BetPayments",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1589,
                        "src": "3009:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetPayments_$1589",
                          "typeString": "contract BetPayments"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1063,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1059,
                            "name": "betRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3676
                            ],
                            "referencedDeclaration": 3676,
                            "src": "3048:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetRegistry_$2635",
                              "typeString": "contract BetRegistry"
                            }
                          },
                          "id": 1060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "betPayments",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3718,
                          "src": "3048:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 1061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3048:25:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1058,
                      "name": "BetPayments",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1589,
                      "src": "3036:11:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_BetPayments_$1589_$",
                        "typeString": "type(contract BetPayments)"
                      }
                    },
                    "id": 1062,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3036:38:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BetPayments_$1589",
                      "typeString": "contract BetPayments"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3009:65:3"
                },
                {
                  "assignments": [
                    1065
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1065,
                      "name": "_betOracle",
                      "nodeType": "VariableDeclaration",
                      "scope": 1216,
                      "src": "3084:20:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BetOracle_$1265",
                        "typeString": "contract BetOracle"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1064,
                        "name": "BetOracle",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 1265,
                        "src": "3084:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetOracle_$1265",
                          "typeString": "contract BetOracle"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1071,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1067,
                            "name": "betRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3676
                            ],
                            "referencedDeclaration": 3676,
                            "src": "3117:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetRegistry_$2635",
                              "typeString": "contract BetRegistry"
                            }
                          },
                          "id": 1068,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "betOracle",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3720,
                          "src": "3117:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 1069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3117:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1066,
                      "name": "BetOracle",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1265,
                      "src": "3107:9:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_BetOracle_$1265_$",
                        "typeString": "type(contract BetOracle)"
                      }
                    },
                    "id": 1070,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3107:34:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BetOracle_$1265",
                      "typeString": "contract BetOracle"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3084:57:3"
                },
                {
                  "assignments": [
                    1073
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1073,
                      "name": "_betTerms",
                      "nodeType": "VariableDeclaration",
                      "scope": 1216,
                      "src": "3151:18:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_BetTerms_$2735",
                        "typeString": "contract BetTerms"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 1072,
                        "name": "BetTerms",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2735,
                        "src": "3151:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetTerms_$2735",
                          "typeString": "contract BetTerms"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1079,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1075,
                            "name": "betRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3676
                            ],
                            "referencedDeclaration": 3676,
                            "src": "3181:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetRegistry_$2635",
                              "typeString": "contract BetRegistry"
                            }
                          },
                          "id": 1076,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "betTerms",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3722,
                          "src": "3181:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                            "typeString": "function () view external returns (address)"
                          }
                        },
                        "id": 1077,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3181:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 1074,
                      "name": "BetTerms",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2735,
                      "src": "3172:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_contract$_BetTerms_$2735_$",
                        "typeString": "type(contract BetTerms)"
                      }
                    },
                    "id": 1078,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3172:32:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_BetTerms_$2735",
                      "typeString": "contract BetTerms"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3151:53:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 1088,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1081,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6095,
                            "src": "3223:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3223:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1085,
                              "name": "_betHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1049,
                              "src": "3268:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1086,
                              "name": "_playerBetHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1051,
                              "src": "3278:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1083,
                              "name": "betRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                3676
                              ],
                              "referencedDeclaration": 3676,
                              "src": "3237:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                "typeString": "contract BetRegistry"
                              }
                            },
                            "id": 1084,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPlayerBetPlayer",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2445,
                            "src": "3237:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32,bytes32) view external returns (address)"
                            }
                          },
                          "id": 1087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3237:56:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3223:70:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1080,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "3215:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1089,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3215:79:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1090,
                  "nodeType": "ExpressionStatement",
                  "src": "3215:79:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1097,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "UnaryOperation",
                        "operator": "!",
                        "prefix": true,
                        "src": "3312:59:3",
                        "subExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1094,
                              "name": "_betHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1049,
                              "src": "3346:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1095,
                              "name": "_playerBetHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1051,
                              "src": "3356:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1092,
                              "name": "betRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                3676
                              ],
                              "referencedDeclaration": 3676,
                              "src": "3313:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                "typeString": "contract BetRegistry"
                              }
                            },
                            "id": 1093,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPlayerBetReturned",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2520,
                            "src": "3313:32:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_bool_$",
                              "typeString": "function (bytes32,bytes32) view external returns (bool)"
                            }
                          },
                          "id": 1096,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3313:58:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1091,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "3304:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1098,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3304:68:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1099,
                  "nodeType": "ExpressionStatement",
                  "src": "3304:68:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1105,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1049,
                                "src": "3475:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1103,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "3445:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 1104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetOracleProxy",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2272,
                              "src": "3445:29:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view external returns (address)"
                              }
                            },
                            "id": 1106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3445:39:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1107,
                            "name": "_betHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1049,
                            "src": "3502:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1101,
                            "name": "_betOracle",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1065,
                            "src": "3404:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetOracle_$1265",
                              "typeString": "contract BetOracle"
                            }
                          },
                          "id": 1102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "outcomeReady",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1240,
                          "src": "3404:23:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 1108,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3404:120:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1100,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "3383:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1109,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3383:151:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1110,
                  "nodeType": "ExpressionStatement",
                  "src": "3383:151:3"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1124,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1115,
                              "name": "_betHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1049,
                              "src": "3630:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1113,
                              "name": "betRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                3676
                              ],
                              "referencedDeclaration": 3676,
                              "src": "3600:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                "typeString": "contract BetRegistry"
                              }
                            },
                            "id": 1114,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getBetOracleProxy",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2272,
                            "src": "3600:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                              "typeString": "function (bytes32) view external returns (address)"
                            }
                          },
                          "id": 1116,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3600:39:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1117,
                          "name": "_betHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1049,
                          "src": "3657:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1111,
                          "name": "_betOracle",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1065,
                          "src": "3561:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BetOracle_$1265",
                            "typeString": "contract BetOracle"
                          }
                        },
                        "id": 1112,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getOutcome",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 1264,
                        "src": "3561:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_uint256_$",
                          "typeString": "function (address,bytes32) view external returns (uint256)"
                        }
                      },
                      "id": 1118,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3561:118:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1121,
                          "name": "_betHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1049,
                          "src": "3714:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1122,
                          "name": "_playerBetHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1051,
                          "src": "3724:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1119,
                          "name": "betRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3676
                          ],
                          "referencedDeclaration": 3676,
                          "src": "3683:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BetRegistry_$2635",
                            "typeString": "contract BetRegistry"
                          }
                        },
                        "id": 1120,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getPlayerBetOption",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2470,
                        "src": "3683:30:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                          "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                        }
                      },
                      "id": 1123,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3683:56:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3561:178:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 1127,
                  "nodeType": "IfStatement",
                  "src": "3544:230:3",
                  "trueBody": {
                    "expression": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 1125,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "3769:5:3",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "functionReturnParameters": 1055,
                    "id": 1126,
                    "nodeType": "Return",
                    "src": "3762:12:3"
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1133,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1049,
                                "src": "3879:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1131,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "3850:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 1132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetTermsProxy",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2291,
                              "src": "3850:28:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view external returns (address)"
                              }
                            },
                            "id": 1134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3850:38:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1137,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1049,
                                "src": "3934:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1135,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "3906:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 1136,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetTermsHash",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2310,
                              "src": "3906:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_bytes32_$",
                                "typeString": "function (bytes32) view external returns (bytes32)"
                              }
                            },
                            "id": 1138,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3906:37:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1129,
                            "name": "_betTerms",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1073,
                            "src": "3806:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetTerms_$2735",
                              "typeString": "contract BetTerms"
                            }
                          },
                          "id": 1130,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "retrievingPeriod",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2692,
                          "src": "3806:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_bool_$",
                            "typeString": "function (address,bytes32) view external returns (bool)"
                          }
                        },
                        "id": 1139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3806:151:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1128,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "3785:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3785:182:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1141,
                  "nodeType": "ExpressionStatement",
                  "src": "3785:182:3"
                },
                {
                  "assignments": [
                    1143
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 1143,
                      "name": "_profits",
                      "nodeType": "VariableDeclaration",
                      "scope": 1216,
                      "src": "3977:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1142,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3977:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 1159,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 1158,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1146,
                          "name": "_betHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1049,
                          "src": "4043:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1149,
                              "name": "_betHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1049,
                              "src": "4100:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 1150,
                              "name": "_playerBetHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1051,
                              "src": "4110:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 1147,
                              "name": "betRegistry",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                3676
                              ],
                              "referencedDeclaration": 3676,
                              "src": "4069:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                "typeString": "contract BetRegistry"
                              }
                            },
                            "id": 1148,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPlayerBetOption",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2470,
                            "src": "4069:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                              "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                            }
                          },
                          "id": 1151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4069:56:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1144,
                          "name": "betRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3676
                          ],
                          "referencedDeclaration": 3676,
                          "src": "3993:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BetRegistry_$2635",
                            "typeString": "contract BetRegistry"
                          }
                        },
                        "id": 1145,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getPrincipalInOption",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2403,
                        "src": "3993:32:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_uint256_$returns$_t_uint256_$",
                          "typeString": "function (bytes32,uint256) view external returns (uint256)"
                        }
                      },
                      "id": 1152,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3993:146:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "/",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 1155,
                          "name": "_betHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1049,
                          "src": "4176:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 1156,
                          "name": "_playerBetHash",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1051,
                          "src": "4186:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 1153,
                          "name": "betRegistry",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            3676
                          ],
                          "referencedDeclaration": 3676,
                          "src": "4142:11:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_BetRegistry_$2635",
                            "typeString": "contract BetRegistry"
                          }
                        },
                        "id": 1154,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "getPlayerBetPrincipal",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 2495,
                        "src": "4142:33:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_external_view$_t_bytes32_$_t_bytes32_$returns$_t_uint256_$",
                          "typeString": "function (bytes32,bytes32) view external returns (uint256)"
                        }
                      },
                      "id": 1157,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4142:59:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3993:208:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3977:224:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 1167,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 1160,
                      "name": "_profits",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1143,
                      "src": "4211:8:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 1166,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1163,
                            "name": "_betHash",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1049,
                            "src": "4252:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1161,
                            "name": "betRegistry",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              3676
                            ],
                            "referencedDeclaration": 3676,
                            "src": "4222:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetRegistry_$2635",
                              "typeString": "contract BetRegistry"
                            }
                          },
                          "id": 1162,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getTotalPrincipal",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2380,
                          "src": "4222:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                            "typeString": "function (bytes32) view external returns (uint256)"
                          }
                        },
                        "id": 1164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4222:39:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "/",
                      "rightExpression": {
                        "argumentTypes": null,
                        "id": 1165,
                        "name": "_profits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1143,
                        "src": "4264:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "4222:50:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4211:61:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 1168,
                  "nodeType": "ExpressionStatement",
                  "src": "4211:61:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1174,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1049,
                                "src": "4406:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1172,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "4374:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 1173,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetPaymentsProxy",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2234,
                              "src": "4374:31:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view external returns (address)"
                              }
                            },
                            "id": 1175,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4374:41:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1178,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1049,
                                "src": "4465:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1176,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "4433:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 1177,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetPaymentsToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2253,
                              "src": "4433:31:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view external returns (address)"
                              }
                            },
                            "id": 1179,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4433:41:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1181,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6156,
                                "src": "4500:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_ETHBetKernelProxy_$1217",
                                  "typeString": "contract ETHBetKernelProxy"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_ETHBetKernelProxy_$1217",
                                  "typeString": "contract ETHBetKernelProxy"
                                }
                              ],
                              "id": 1180,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "4492:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 1182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4492:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1183,
                            "name": "_profits",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1143,
                            "src": "4523:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1170,
                            "name": "_betPayments",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1057,
                            "src": "4335:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_BetPayments_$1589",
                              "typeString": "contract BetPayments"
                            }
                          },
                          "id": 1171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 1568,
                          "src": "4335:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,address,uint256) external returns (bool)"
                          }
                        },
                        "id": 1184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4335:210:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 1169,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        6098,
                        6099
                      ],
                      "referencedDeclaration": 6098,
                      "src": "4314:7:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 1185,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4314:241:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1186,
                  "nodeType": "ExpressionStatement",
                  "src": "4314:241:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1190,
                        "name": "_betHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1049,
                        "src": "4599:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 1191,
                        "name": "_playerBetHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1051,
                        "src": "4609:14:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 1192,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4625:4:3",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 1187,
                        "name": "betRegistry",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [
                          3676
                        ],
                        "referencedDeclaration": 3676,
                        "src": "4566:11:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_BetRegistry_$2635",
                          "typeString": "contract BetRegistry"
                        }
                      },
                      "id": 1189,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "setPlayerBetReturned",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 2606,
                      "src": "4566:32:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_bytes32_$_t_bool_$returns$_t_bool_$",
                        "typeString": "function (bytes32,bytes32,bool) external returns (bool)"
                      }
                    },
                    "id": 1193,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4566:64:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 1194,
                  "nodeType": "ExpressionStatement",
                  "src": "4566:64:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1202,
                        "name": "_profits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1143,
                        "src": "4700:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1198,
                                "name": "_betHash",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1049,
                                "src": "4680:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1196,
                                "name": "betRegistry",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  3676
                                ],
                                "referencedDeclaration": 3676,
                                "src": "4648:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_BetRegistry_$2635",
                                  "typeString": "contract BetRegistry"
                                }
                              },
                              "id": 1197,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "getBetPaymentsToken",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2253,
                              "src": "4648:31:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_address_$",
                                "typeString": "function (bytes32) view external returns (address)"
                              }
                            },
                            "id": 1199,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "4648:41:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1195,
                          "name": "WETH9",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4094,
                          "src": "4642:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_WETH9_$4094_$",
                            "typeString": "type(contract WETH9)"
                          }
                        },
                        "id": 1200,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4642:48:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_WETH9_$4094",
                          "typeString": "contract WETH9"
                        }
                      },
                      "id": 1201,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "withdraw",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3961,
                      "src": "4642:57:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256) external"
                      }
                    },
                    "id": 1203,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4642:67:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1204,
                  "nodeType": "ExpressionStatement",
                  "src": "4642:67:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 1210,
                        "name": "_profits",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1143,
                        "src": "4767:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1205,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6095,
                              "src": "4746:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1207,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4746:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "id": 1208,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "4745:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1209,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4745:21:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 1211,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4745:31:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 1212,
                  "nodeType": "ExpressionStatement",
                  "src": "4745:31:3"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 1213,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4795:4:3",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 1055,
                  "id": 1214,
                  "nodeType": "Return",
                  "src": "4788:11:3"
                }
              ]
            },
            "documentation": "@dev Function that ask for the profits of a user\n@param _betHash bytes32 the hash of the bet\n@param _playerBetHash bytes32 the hash of the game bet the player played\n@return uint the amount of tokens sent",
            "id": 1216,
            "implemented": true,
            "isConstructor": false,
            "isDeclaredConst": false,
            "modifiers": [],
            "name": "getProfits",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 1052,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1049,
                  "name": "_betHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 1216,
                  "src": "2903:16:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1048,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2903:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 1051,
                  "name": "_playerBetHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 1216,
                  "src": "2929:22:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 1050,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2929:7:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2893:64:3"
            },
            "payable": false,
            "returnParameters": {
              "id": 1055,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 1054,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 1216,
                  "src": "2989:4:3",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 1053,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2989:4:3",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2988:6:3"
            },
            "scope": 1217,
            "src": "2874:1932:3",
            "stateMutability": "nonpayable",
            "superFunction": 3423,
            "visibility": "public"
          }
        ],
        "scope": 1218,
        "src": "519:4289:3"
      }
    ],
    "src": "0:4809:3"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.25+commit.59dbf8f1.Emscripten.clang"
  },
  "networks": {},
  "schemaVersion": "3.0.0-beta.1",
  "updatedAt": "2018-11-09T16:16:14.120Z"
}