{
  "contractName": "InvitesV1",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "inviter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "invitee",
          "type": "address"
        }
      ],
      "name": "InviteeJoined",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "inviter",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "invitee",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "bountyPaid",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "inviterLevel",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "earnedLevel",
          "type": "bool"
        }
      ],
      "name": "InviterBounty",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "active",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "avatar",
      "outputs": [
        {
          "internalType": "address payable",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "codeToUser",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "goodDollar",
      "outputs": [
        {
          "internalType": "contract cERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "identity",
      "outputs": [
        {
          "internalType": "contract IIdentity",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "levelExpirationEnabled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "name": "levels",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "toNext",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "bounty",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "daysToComplete",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [],
      "name": "stats",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "totalApprovedInvites",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalBountiesPaid",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalInvited",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "users",
      "outputs": [
        {
          "internalType": "address",
          "name": "invitedBy",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "inviteCode",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "bountyPaid",
          "type": "bool"
        },
        {
          "internalType": "uint256",
          "name": "level",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "levelStarted",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalApprovedInvites",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "totalEarned",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "joinedAt",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address payable",
          "name": "_avatar",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_identity",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_gd",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "level0Bounty",
          "type": "uint256"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_isEnabled",
          "type": "bool"
        }
      ],
      "name": "setLevelExpirationEnabled",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_myCode",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_inviterCode",
          "type": "bytes32"
        }
      ],
      "name": "join",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_invitee",
          "type": "address"
        }
      ],
      "name": "canCollectBountyFor",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_inviter",
          "type": "address"
        }
      ],
      "name": "getInvitees",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_inviter",
          "type": "address"
        }
      ],
      "name": "getPendingInvitees",
      "outputs": [
        {
          "internalType": "address[]",
          "name": "",
          "type": "address[]"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_inviter",
          "type": "address"
        }
      ],
      "name": "getPendingBounties",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function",
      "constant": true
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_invitee",
          "type": "address"
        }
      ],
      "name": "bountyFor",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "collectBounties",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_lvl",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_toNext",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_bounty",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "_daysToComplete",
          "type": "uint256"
        }
      ],
      "name": "setLevel",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bool",
          "name": "_active",
          "type": "bool"
        }
      ],
      "name": "setActive",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "end",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "string",
          "name": "",
          "type": "string"
        }
      ],
      "stateMutability": "pure",
      "type": "function",
      "constant": true
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"inviter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"invitee\",\"type\":\"address\"}],\"name\":\"InviteeJoined\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"inviter\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"invitee\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"bountyPaid\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"inviterLevel\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"earnedLevel\",\"type\":\"bool\"}],\"name\":\"InviterBounty\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"active\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"avatar\",\"outputs\":[{\"internalType\":\"address payable\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_invitee\",\"type\":\"address\"}],\"name\":\"bountyFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_invitee\",\"type\":\"address\"}],\"name\":\"canCollectBountyFor\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"codeToUser\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectBounties\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"end\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_inviter\",\"type\":\"address\"}],\"name\":\"getInvitees\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_inviter\",\"type\":\"address\"}],\"name\":\"getPendingBounties\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_inviter\",\"type\":\"address\"}],\"name\":\"getPendingInvitees\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"goodDollar\",\"outputs\":[{\"internalType\":\"contract cERC20\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"identity\",\"outputs\":[{\"internalType\":\"contract IIdentity\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address payable\",\"name\":\"_avatar\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_identity\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_gd\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"level0Bounty\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_myCode\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_inviterCode\",\"type\":\"bytes32\"}],\"name\":\"join\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"levelExpirationEnabled\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"levels\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"toNext\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"bounty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"daysToComplete\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_active\",\"type\":\"bool\"}],\"name\":\"setActive\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_lvl\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_toNext\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_bounty\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_daysToComplete\",\"type\":\"uint256\"}],\"name\":\"setLevel\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bool\",\"name\":\"_isEnabled\",\"type\":\"bool\"}],\"name\":\"setLevelExpirationEnabled\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"stats\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalApprovedInvites\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalBountiesPaid\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalInvited\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"users\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"invitedBy\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"inviteCode\",\"type\":\"bytes32\"},{\"internalType\":\"bool\",\"name\":\"bountyPaid\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"level\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"levelStarted\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalApprovedInvites\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"totalEarned\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"joinedAt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"version\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"bountyFor(address)\":{\"details\":\"pay bounty for the inviter of _invitee invitee need to be whitelisted\"},\"collectBounties()\":{\"details\":\"collect bounties for invitees by msg.sender that are now whitelisted\"},\"version()\":{\"details\":\"1.2.0 - final changes before release\"}},\"title\":\"InvitesV1 contract that handles invites with pre allocated bounty pool 1.1 adds invitee bonus\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/invite/InvitesV1.sol\":\"InvitesV1\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/Interfaces.sol\":{\"keccak256\":\"0xe501727b0e5e15fe639129ab4b1abc59a14ebd3ddd05bb7056ac4fc26a8f3ee7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://90d8797740cfd3933ae849f3144e30f9133a55b26634b3efefa8206cd91f62d8\",\"dweb:/ipfs/QmYLeetoyiPej9acnGzjLLwgVnEg4d2Eg1Xb4k3A1mJqj6\"]},\"/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/invite/InvitesV1.sol\":{\"keccak256\":\"0xfa188cd1a93abd6aa3d4f08bd67bbfcc437abf90be8af5993398e564e7482f2d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://1e78dc63e85533c0a83f27d06e36d3ccda09851e093e09171b69352cce00f488\",\"dweb:/ipfs/QmbX7PvYrrvv3ADbZ8kxTH8hZ8XySBeABfcWky6gBXtMP8\"]},\"@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol\":{\"keccak256\":\"0xe9ecc18d06bcc5aa48c40a98333540248b6c1c18ecb6262329c06d3f0cbb45ae\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8a81bcbe4f867a4eaf7ec375508a9901ea7517b9854c9a542c242050beda5127\",\"dweb:/ipfs/QmS499VRDhAgMg1pK96PiyRpP3gJZzzMcoNBbe8AV3JNw3\"]},\"@openzeppelin/contracts-upgradeable/proxy/Initializable.sol\":{\"keccak256\":\"0xae7044b7c89ed74327b0979ae6f317c65d87b8d17a42d0c62d698d77d5de5511\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d676c978d8ecee5c4510f045b747d94f3a1381e39feb870d2675d5b6d45a371b\",\"dweb:/ipfs/QmUAokuHWPVAf14QkhPtSdYFyNa8HVje9CBEzwCcxH3xkP\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b50611bc9806100206000396000f3fe608060405234801561001057600080fd5b506004361061014d5760003560e01c8063a87430ba116100c3578063ba6f56801161007c578063ba6f56801461029f578063cf756fdf146102b2578063d80528ae146102c5578063e951a3aa146102cd578063e9881a5e146102ed578063efbe1c1c146103005761014d565b8063a87430ba14610215578063acec338a1461023c578063af6346b01461024f578063b2596a6714610257578063b6567cd514610279578063b9fb2d181461028c5761014d565b806354fd4d501161011557806354fd4d50146101c25780635aef7de6146101d75780635b419a65146101df5780636d619ef8146101f25780638da5cb5b14610205578063a1df6fd31461020d5761014d565b806302fb0c5e14610152578063119e5bf31461017057806321132aad146101855780632c159a1a1461019a57806341155d5e146101a2575b600080fd5b61015a610308565b60405161016791906119a5565b60405180910390f35b610178610318565b60405161016791906118ea565b610198610193366004611830565b610327565b005b610178610382565b6101b56101b03660046117c4565b610391565b6040516101679190611b36565b6101ca610448565b60405161016791906119b0565b610178610467565b6101986101ed366004611880565b610476565b61015a6102003660046117c4565b6105ec565b610178610b10565b61015a610b1f565b6102286102233660046117c4565b610b28565b604051610167989796959493929190611917565b61019861024a366004611830565b610b7b565b610198610bd8565b61026a610265366004611868565b610d61565b60405161016793929190611b57565b6101986102873660046117c4565b610d82565b61019861029a3660046118b9565b6110a0565b6101786102ad366004611868565b6110ff565b6101986102c03660046117e0565b61111a565b61026a61122d565b6102e06102db3660046117c4565b611239565b6040516101679190611958565b6102e06102fb3660046117c4565b6113fd565b610198611476565b600754600160a01b900460ff1681565b6007546001600160a01b031681565b6005546001600160a01b031633148061034a57506003546001600160a01b031633145b61036f5760405162461bcd60e51b815260040161036690611a7e565b60405180910390fd5b6010805460ff1916911515919091179055565b6006546001600160a01b031681565b6001600160a01b038116600090815260026020908152604080832060040180548251818502810185019093528083526060938301828280156103fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103de575b505050505090506000805b82518110156104405761042c83828151811061041f57fe5b60200260200101516105ec565b15610438576001909101905b600101610407565b509392505050565b6040805180820190915260058152640312e322e360dc1b602082015290565b6003546001600160a01b031681565b600754600160a01b900460ff1661048c57600080fd5b3360009081526002602052604090206001810154156104bd5760405162461bcd60e51b815260040161036690611a51565b6000838152600160205260409020546001600160a01b0316156104f25760405162461bcd60e51b815260040161036690611aca565b6000828152600160208190526040808320549184018690554260068501819055600985015585835290912080546001600160a01b031916331790556001600160a01b031680156105b05781546001600160a01b0382166001600160a01b031991821681178455600090815260026020908152604082206003810180546001818101835591855283852001805486163390811790915560049092018054808301825590855292909320909101805490931617909155600a805490910190555b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b60006105f6611715565b6001600160a01b03808416600090815260026020818152604092839020835161016081018552815490951685526001810154858301529182015460ff1615158484015260038201805484518184028101840190955280855292936060860193909283018282801561069057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610672575b50505050508152602001600482018054806020026020016040519081016040528092919081815260200182805480156106f257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106d4575b505050505081526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201600580602002604051908101604052809291908260058015610769576020028201915b815481526020019060010190808311610755575b505050505081525050905061077c611715565b81516001600160a01b03908116600090815260026020818152604092839020835161016081018552815490951685526001810154858301529182015460ff1615158484015260038201805484518184028101840190955280855292936060860193909283018282801561081857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107fa575b505050505081526020016004820180548060200260200160405190810160405280929190818152602001828054801561087a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161085c575b505050505081526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a82016005806020026040519081016040528092919082600580156108f1576020028201915b8154815260200190600101908083116108dd575b5050505050815250509050610904611782565b60a08083015160009081526004602090815260409182902082516080810184528154815260018201549281019290925260028101548284015282519384019092529160608301906003830160058282826020028201915b81548152602001906001019080831161095b5750505091909252505060105491925060009160ff1615156001149050801561099a575060008260400151115b80156109d157506109ca620151806109c48560c0015187610120015161162190919063ffffffff16565b9061166a565b8260400151105b905083604001511580156109ee575083516001600160a01b031615155b8015610a755750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf90610a259089906004016118ea565b60206040518083038186803b158015610a3d57600080fd5b505afa158015610a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a75919061184c565b8015610afc57506006548451604051633af32abf60e01b81526001600160a01b0390921691633af32abf91610aac916004016118ea565b60206040518083038186803b158015610ac457600080fd5b505afa158015610ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afc919061184c565b8015610b06575080155b9695505050505050565b6005546001600160a01b031681565b60105460ff1681565b6002602081905260009182526040909120805460018201549282015460058301546006840154600785015460088601546009909601546001600160a01b03909516969560ff909416949293919290919088565b6005546001600160a01b0316331480610b9e57506003546001600160a01b031633145b610bba5760405162461bcd60e51b815260040161036690611a7e565b60078054911515600160a01b0260ff60a01b19909216919091179055565b600754600160a01b900460ff16610bee57600080fd5b336000908152600260205260408120905b6004820154811015610d5d57610c37826004018281548110610c1d57fe5b6000918252602090912001546001600160a01b03166105ec565b15610c6857610c68826004018281548110610c4e57fe5b6000918252602090912001546001600160a01b0316610d82565b60026000836004018381548110610c7b57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206002015460ff1615610d5557600482015460001901811015610d25576004820180546000198101908110610ccf57fe5b6000918252602090912001546004830180546001600160a01b039092169183908110610cf757fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600019015b81600401805480610d3257fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101610bff565b5050565b60046020526000908152604090208054600182015460029092015490919083565b600754600160a01b900460ff16610d9857600080fd5b610da1816105ec565b610dbd5760405162461bcd60e51b815260040161036690611b01565b6001600160a01b03808216600090815260026020526040808220805490931682529020610de8611782565b600582810154600090815260046020908152604091829020825160808101845281548152600182015492810192909252600281015482840152825160a081019384905291939092606085019291600385019182845b815481526020019060010190808311610e3d5750505050508152505090506000808260400151118015610e77575082600601548460090154115b8015610ea75750610ea0620151806109c48560060154876009015461162190919063ffffffff16565b8260400151105b60028501805460ff1916600190811790915560078501805482019055602084015160088087018054830190558054909201909155600980549091019055825190915060009015801590610eff57508251600785015410155b8015610f09575081155b15610f24575060058301805460019081019091554260068501555b6007548554602085015160405163a9059cbb60e01b81526001600160a01b039384169363a9059cbb93610f5c939116916004016118fe565b602060405180830381600087803b158015610f7657600080fd5b505af1158015610f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fae919061184c565b5060075460208401516001600160a01b039091169063a9059cbb908890610fd690600261166a565b6040518363ffffffff1660e01b8152600401610ff39291906118fe565b602060405180830381600087803b15801561100d57600080fd5b505af1158015611021573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611045919061184c565b508454602084015160058601546040516001600160a01b03808b169416927f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b92611090928790611b3f565b60405180910390a3505050505050565b6005546001600160a01b03163314806110c357506003546001600160a01b031633145b6110df5760405162461bcd60e51b815260040161036690611a7e565b600093845260046020526040909320918255600282019290925560010155565b6001602052600090815260409020546001600160a01b031681565b600054610100900460ff168061113357506111336116ac565b80611141575060005460ff16155b61115d5760405162461bcd60e51b815260040161036690611a03565b600054610100900460ff16158015611188576000805460ff1961ff0019909116610100171660011790555b60058054336001600160a01b0319918216179091556006805482166001600160a01b0387811691909117909155600780546000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed869055600160a01b60ff60a01b19909116178316868316179055600380549092169087161790556010805460ff191690558015611226576000805461ff00191690555b5050505050565b600854600954600a5483565b60608060026000846001600160a01b03166001600160a01b031681526020019081526020016000206004018054806020026020016040519081016040528092919081815260200182805480156112b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161129a575b5050505050905060008060005b835181101561131b57600260008583815181106112de57fe5b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16611313576001909101905b6001016112c5565b5060608167ffffffffffffffff8111801561133557600080fd5b5060405190808252806020026020018201604052801561135f578160200160208202803683370190505b50905060005b84518110156113f3576002600086838151811061137e57fe5b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff166113eb578481815181106113b857fe5b60200260200101518285815181106113cc57fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611365565b5095945050505050565b6001600160a01b03811660009081526002602090815260409182902060030180548351818402810184019094528084526060939283018282801561146a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161144c575b50505050509050919050565b6005546001600160a01b031633148061149957506003546001600160a01b031633145b6114b55760405162461bcd60e51b815260040161036690611a7e565b600754600160a01b900460ff166114cb57600080fd5b6007546040516370a0823160e01b81526000916001600160a01b0316906370a08231906114fc9030906004016118ea565b60206040518083038186803b15801561151457600080fd5b505afa158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154c91906118a1565b60075460035460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb9261158492169085906004016118fe565b602060405180830381600087803b15801561159e57600080fd5b505af11580156115b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d6919061184c565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611610573d6000803e3d6000fd5b50506007805460ff60a01b19169055565b600061166383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116b2565b9392505050565b600061166383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116de565b303b1590565b600081848411156116d65760405162461bcd60e51b815260040161036691906119b0565b505050900390565b600081836116ff5760405162461bcd60e51b815260040161036691906119b0565b50600083858161170b57fe5b0495945050505050565b60405180610160016040528060006001600160a01b03168152602001600080191681526020016000151581526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200161177d6117a6565b905290565b604051806080016040528060008152602001600081526020016000815260200161177d5b6040518060a001604052806005906020820280368337509192915050565b6000602082840312156117d5578081fd5b813561166381611b6d565b600080600080608085870312156117f5578283fd5b843561180081611b6d565b9350602085013561181081611b6d565b9250604085013561182081611b6d565b9396929550929360600135925050565b600060208284031215611841578081fd5b813561166381611b85565b60006020828403121561185d578081fd5b815161166381611b85565b600060208284031215611879578081fd5b5035919050565b60008060408385031215611892578182fd5b50508035926020909101359150565b6000602082840312156118b2578081fd5b5051919050565b600080600080608085870312156118ce578384fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03989098168852602088019690965293151560408701526060860192909252608085015260a084015260c083015260e08201526101000190565b6020808252825182820181905260009190848201906040850190845b818110156119995783516001600160a01b031683529284019291840191600101611974565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b818110156119dc578581018301518582016040015282016119c0565b818111156119ed5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252601390820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b604082015260600190565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b6020808252601a908201527f696e7669746520636f646520616c726561647920696e20757365000000000000604082015260600190565b6020808252818101527f75736572206e6f7420656c6c6967626c6520666f7220626f756e747920796574604082015260600190565b90815260200190565b92835260208301919091521515604082015260600190565b9283526020830191909152604082015260600190565b6001600160a01b0381168114611b8257600080fd5b50565b8015158114611b8257600080fdfea2646970667358221220671bfd2c0da6f3f1ce9990d72211cd171c949bb830661113dc35957ff1d5ea6f64736f6c634300060c0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b506004361061014d5760003560e01c8063a87430ba116100c3578063ba6f56801161007c578063ba6f56801461029f578063cf756fdf146102b2578063d80528ae146102c5578063e951a3aa146102cd578063e9881a5e146102ed578063efbe1c1c146103005761014d565b8063a87430ba14610215578063acec338a1461023c578063af6346b01461024f578063b2596a6714610257578063b6567cd514610279578063b9fb2d181461028c5761014d565b806354fd4d501161011557806354fd4d50146101c25780635aef7de6146101d75780635b419a65146101df5780636d619ef8146101f25780638da5cb5b14610205578063a1df6fd31461020d5761014d565b806302fb0c5e14610152578063119e5bf31461017057806321132aad146101855780632c159a1a1461019a57806341155d5e146101a2575b600080fd5b61015a610308565b60405161016791906119a5565b60405180910390f35b610178610318565b60405161016791906118ea565b610198610193366004611830565b610327565b005b610178610382565b6101b56101b03660046117c4565b610391565b6040516101679190611b36565b6101ca610448565b60405161016791906119b0565b610178610467565b6101986101ed366004611880565b610476565b61015a6102003660046117c4565b6105ec565b610178610b10565b61015a610b1f565b6102286102233660046117c4565b610b28565b604051610167989796959493929190611917565b61019861024a366004611830565b610b7b565b610198610bd8565b61026a610265366004611868565b610d61565b60405161016793929190611b57565b6101986102873660046117c4565b610d82565b61019861029a3660046118b9565b6110a0565b6101786102ad366004611868565b6110ff565b6101986102c03660046117e0565b61111a565b61026a61122d565b6102e06102db3660046117c4565b611239565b6040516101679190611958565b6102e06102fb3660046117c4565b6113fd565b610198611476565b600754600160a01b900460ff1681565b6007546001600160a01b031681565b6005546001600160a01b031633148061034a57506003546001600160a01b031633145b61036f5760405162461bcd60e51b815260040161036690611a7e565b60405180910390fd5b6010805460ff1916911515919091179055565b6006546001600160a01b031681565b6001600160a01b038116600090815260026020908152604080832060040180548251818502810185019093528083526060938301828280156103fc57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116103de575b505050505090506000805b82518110156104405761042c83828151811061041f57fe5b60200260200101516105ec565b15610438576001909101905b600101610407565b509392505050565b6040805180820190915260058152640312e322e360dc1b602082015290565b6003546001600160a01b031681565b600754600160a01b900460ff1661048c57600080fd5b3360009081526002602052604090206001810154156104bd5760405162461bcd60e51b815260040161036690611a51565b6000838152600160205260409020546001600160a01b0316156104f25760405162461bcd60e51b815260040161036690611aca565b6000828152600160208190526040808320549184018690554260068501819055600985015585835290912080546001600160a01b031916331790556001600160a01b031680156105b05781546001600160a01b0382166001600160a01b031991821681178455600090815260026020908152604082206003810180546001818101835591855283852001805486163390811790915560049092018054808301825590855292909320909101805490931617909155600a805490910190555b60405133906001600160a01b038316907fd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b05190600090a350505050565b60006105f6611715565b6001600160a01b03808416600090815260026020818152604092839020835161016081018552815490951685526001810154858301529182015460ff1615158484015260038201805484518184028101840190955280855292936060860193909283018282801561069057602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610672575b50505050508152602001600482018054806020026020016040519081016040528092919081815260200182805480156106f257602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116106d4575b505050505081526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a8201600580602002604051908101604052809291908260058015610769576020028201915b815481526020019060010190808311610755575b505050505081525050905061077c611715565b81516001600160a01b03908116600090815260026020818152604092839020835161016081018552815490951685526001810154858301529182015460ff1615158484015260038201805484518184028101840190955280855292936060860193909283018282801561081857602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116107fa575b505050505081526020016004820180548060200260200160405190810160405280929190818152602001828054801561087a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161085c575b505050505081526020016005820154815260200160068201548152602001600782015481526020016008820154815260200160098201548152602001600a82016005806020026040519081016040528092919082600580156108f1576020028201915b8154815260200190600101908083116108dd575b5050505050815250509050610904611782565b60a08083015160009081526004602090815260409182902082516080810184528154815260018201549281019290925260028101548284015282519384019092529160608301906003830160058282826020028201915b81548152602001906001019080831161095b5750505091909252505060105491925060009160ff1615156001149050801561099a575060008260400151115b80156109d157506109ca620151806109c48560c0015187610120015161162190919063ffffffff16565b9061166a565b8260400151105b905083604001511580156109ee575083516001600160a01b031615155b8015610a755750600654604051633af32abf60e01b81526001600160a01b0390911690633af32abf90610a259089906004016118ea565b60206040518083038186803b158015610a3d57600080fd5b505afa158015610a51573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a75919061184c565b8015610afc57506006548451604051633af32abf60e01b81526001600160a01b0390921691633af32abf91610aac916004016118ea565b60206040518083038186803b158015610ac457600080fd5b505afa158015610ad8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610afc919061184c565b8015610b06575080155b9695505050505050565b6005546001600160a01b031681565b60105460ff1681565b6002602081905260009182526040909120805460018201549282015460058301546006840154600785015460088601546009909601546001600160a01b03909516969560ff909416949293919290919088565b6005546001600160a01b0316331480610b9e57506003546001600160a01b031633145b610bba5760405162461bcd60e51b815260040161036690611a7e565b60078054911515600160a01b0260ff60a01b19909216919091179055565b600754600160a01b900460ff16610bee57600080fd5b336000908152600260205260408120905b6004820154811015610d5d57610c37826004018281548110610c1d57fe5b6000918252602090912001546001600160a01b03166105ec565b15610c6857610c68826004018281548110610c4e57fe5b6000918252602090912001546001600160a01b0316610d82565b60026000836004018381548110610c7b57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190206002015460ff1615610d5557600482015460001901811015610d25576004820180546000198101908110610ccf57fe5b6000918252602090912001546004830180546001600160a01b039092169183908110610cf757fe5b600091825260209091200180546001600160a01b0319166001600160a01b0392909216919091179055600019015b81600401805480610d3257fe5b600082815260209020810160001990810180546001600160a01b03191690550190555b600101610bff565b5050565b60046020526000908152604090208054600182015460029092015490919083565b600754600160a01b900460ff16610d9857600080fd5b610da1816105ec565b610dbd5760405162461bcd60e51b815260040161036690611b01565b6001600160a01b03808216600090815260026020526040808220805490931682529020610de8611782565b600582810154600090815260046020908152604091829020825160808101845281548152600182015492810192909252600281015482840152825160a081019384905291939092606085019291600385019182845b815481526020019060010190808311610e3d5750505050508152505090506000808260400151118015610e77575082600601548460090154115b8015610ea75750610ea0620151806109c48560060154876009015461162190919063ffffffff16565b8260400151105b60028501805460ff1916600190811790915560078501805482019055602084015160088087018054830190558054909201909155600980549091019055825190915060009015801590610eff57508251600785015410155b8015610f09575081155b15610f24575060058301805460019081019091554260068501555b6007548554602085015160405163a9059cbb60e01b81526001600160a01b039384169363a9059cbb93610f5c939116916004016118fe565b602060405180830381600087803b158015610f7657600080fd5b505af1158015610f8a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fae919061184c565b5060075460208401516001600160a01b039091169063a9059cbb908890610fd690600261166a565b6040518363ffffffff1660e01b8152600401610ff39291906118fe565b602060405180830381600087803b15801561100d57600080fd5b505af1158015611021573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611045919061184c565b508454602084015160058601546040516001600160a01b03808b169416927f6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b92611090928790611b3f565b60405180910390a3505050505050565b6005546001600160a01b03163314806110c357506003546001600160a01b031633145b6110df5760405162461bcd60e51b815260040161036690611a7e565b600093845260046020526040909320918255600282019290925560010155565b6001602052600090815260409020546001600160a01b031681565b600054610100900460ff168061113357506111336116ac565b80611141575060005460ff16155b61115d5760405162461bcd60e51b815260040161036690611a03565b600054610100900460ff16158015611188576000805460ff1961ff0019909116610100171660011790555b60058054336001600160a01b0319918216179091556006805482166001600160a01b0387811691909117909155600780546000805260046020527f17ef568e3e12ab5b9c7254a8d58478811de00f9e6eb34345acd53bf8fd09d3ed869055600160a01b60ff60a01b19909116178316868316179055600380549092169087161790556010805460ff191690558015611226576000805461ff00191690555b5050505050565b600854600954600a5483565b60608060026000846001600160a01b03166001600160a01b031681526020019081526020016000206004018054806020026020016040519081016040528092919081815260200182805480156112b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161129a575b5050505050905060008060005b835181101561131b57600260008583815181106112de57fe5b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff16611313576001909101905b6001016112c5565b5060608167ffffffffffffffff8111801561133557600080fd5b5060405190808252806020026020018201604052801561135f578160200160208202803683370190505b50905060005b84518110156113f3576002600086838151811061137e57fe5b6020908102919091018101516001600160a01b031682528101919091526040016000206002015460ff166113eb578481815181106113b857fe5b60200260200101518285815181106113cc57fe5b6001600160a01b03909216602092830291909101909101526001909301925b600101611365565b5095945050505050565b6001600160a01b03811660009081526002602090815260409182902060030180548351818402810184019094528084526060939283018282801561146a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161144c575b50505050509050919050565b6005546001600160a01b031633148061149957506003546001600160a01b031633145b6114b55760405162461bcd60e51b815260040161036690611a7e565b600754600160a01b900460ff166114cb57600080fd5b6007546040516370a0823160e01b81526000916001600160a01b0316906370a08231906114fc9030906004016118ea565b60206040518083038186803b15801561151457600080fd5b505afa158015611528573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154c91906118a1565b60075460035460405163a9059cbb60e01b81529293506001600160a01b039182169263a9059cbb9261158492169085906004016118fe565b602060405180830381600087803b15801561159e57600080fd5b505af11580156115b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d6919061184c565b506003546040516001600160a01b03909116904780156108fc02916000818181858888f19350505050158015611610573d6000803e3d6000fd5b50506007805460ff60a01b19169055565b600061166383836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506116b2565b9392505050565b600061166383836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506116de565b303b1590565b600081848411156116d65760405162461bcd60e51b815260040161036691906119b0565b505050900390565b600081836116ff5760405162461bcd60e51b815260040161036691906119b0565b50600083858161170b57fe5b0495945050505050565b60405180610160016040528060006001600160a01b03168152602001600080191681526020016000151581526020016060815260200160608152602001600081526020016000815260200160008152602001600081526020016000815260200161177d6117a6565b905290565b604051806080016040528060008152602001600081526020016000815260200161177d5b6040518060a001604052806005906020820280368337509192915050565b6000602082840312156117d5578081fd5b813561166381611b6d565b600080600080608085870312156117f5578283fd5b843561180081611b6d565b9350602085013561181081611b6d565b9250604085013561182081611b6d565b9396929550929360600135925050565b600060208284031215611841578081fd5b813561166381611b85565b60006020828403121561185d578081fd5b815161166381611b85565b600060208284031215611879578081fd5b5035919050565b60008060408385031215611892578182fd5b50508035926020909101359150565b6000602082840312156118b2578081fd5b5051919050565b600080600080608085870312156118ce578384fd5b5050823594602084013594506040840135936060013592509050565b6001600160a01b0391909116815260200190565b6001600160a01b03929092168252602082015260400190565b6001600160a01b03989098168852602088019690965293151560408701526060860192909252608085015260a084015260c083015260e08201526101000190565b6020808252825182820181905260009190848201906040850190845b818110156119995783516001600160a01b031683529284019291840191600101611974565b50909695505050505050565b901515815260200190565b6000602080835283518082850152825b818110156119dc578581018301518582016040015282016119c0565b818111156119ed5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252602e908201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160408201526d191e481a5b9a5d1a585b1a5e995960921b606082015260800190565b6020808252601390820152721d5cd95c88185b1c9958591e481a9bda5b9959606a1b604082015260600190565b6020808252602c908201527f4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d60408201526b103a3434b99030b1ba34b7b760a11b606082015260800190565b6020808252601a908201527f696e7669746520636f646520616c726561647920696e20757365000000000000604082015260600190565b6020808252818101527f75736572206e6f7420656c6c6967626c6520666f7220626f756e747920796574604082015260600190565b90815260200190565b92835260208301919091521515604082015260600190565b9283526020830191909152604082015260600190565b6001600160a01b0381168114611b8257600080fd5b50565b8015158114611b8257600080fdfea2646970667358221220671bfd2c0da6f3f1ce9990d72211cd171c949bb830661113dc35957ff1d5ea6f64736f6c634300060c0033",
  "immutableReferences": {},
  "sourceMap": "383:6877:6:-:0;;;;;;;;;;;;;;;;;;;",
  "deployedSourceMap": "383:6877:6:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1253:18;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1226:24;;;:::i;:::-;;;;;;;:::i;2228:116::-;;;;;;:::i;:::-;;:::i;:::-;;1198:25;;;:::i;4234:287::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;7181:77::-;;;:::i;:::-;;;;;;;:::i;1099:29::-;;;:::i;2347:683::-;;;;;;:::i;:::-;;:::i;3033:566::-;;;;;;:::i;:::-;;:::i;1175:20::-;;;:::i;1296:34::-;;;:::i;1059:37::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;6827:78::-;;;;;;:::i;:::-;;:::i;5911:659::-;;;:::i;1132:39::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;4618:1198::-;;;;;;:::i;:::-;;:::i;6573:251::-;;;;;;:::i;:::-;;:::i;1011:45::-;;;;;;:::i;:::-;;:::i;1874:351::-;;;;;;:::i;:::-;;:::i;1274:18::-;;;:::i;3729:502::-;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;3602:124::-;;;;;;:::i;:::-;;:::i;6908:210::-;;;:::i;1253:18::-;;;-1:-1:-1;;;1253:18:6;;;;;:::o;1226:24::-;;;-1:-1:-1;;;;;1226:24:6;;:::o;2228:116::-;1607:5;;-1:-1:-1;;;;;1607:5:6;1593:10;:19;;:43;;-1:-1:-1;1630:6:6;;-1:-1:-1;;;;;1630:6:6;1616:10;:20;1593:43;1581:110;;;;-1:-1:-1;;;1581:110:6;;;;;;;:::i;:::-;;;;;;;;;2305:22:::1;:35:::0;;-1:-1:-1;;2305:35:6::1;::::0;::::1;;::::0;;;::::1;::::0;;2228:116::o;1198:25::-;;;-1:-1:-1;;;;;1198:25:6;;:::o;4234:287::-;-1:-1:-1;;;;;4348:15:6;;4307:7;4348:15;;;:5;:15;;;;;;;;:23;;4321:50;;;;;;;;;;;;;;;;;:24;;:50;;4348:23;4321:50;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4321:50:6;;;;;;;;;;;;;;;;;;;;;;;4375:13;4401:9;4396:106;4416:7;:14;4412:1;:18;4396:106;;;4446:31;4466:7;4474:1;4466:10;;;;;;;;;;;;;;4446:19;:31::i;:::-;4442:56;;;4485:7;;;;;4442:56;4432:3;;4396:106;;;-1:-1:-1;4512:5:6;4234:287;-1:-1:-1;;;4234:287:6:o;7181:77::-;7240:14;;;;;;;;;;;;-1:-1:-1;;;7240:14:6;;;;7181:77;:::o;1099:29::-;;;-1:-1:-1;;;;;1099:29:6;;:::o;2347:683::-;1855:6;;-1:-1:-1;;;1855:6:6;;;;1847:15;;;;;;2446:10:::1;2420:17;2440::::0;;;:5:::1;:17;::::0;;;;2469:15:::1;::::0;::::1;::::0;:22;2461:54:::1;;;;-1:-1:-1::0;;;2461:54:6::1;;;;;;;:::i;:::-;2562:1;2531:19:::0;;;:10:::1;:19;::::0;;;;;-1:-1:-1;;;;;2531:19:6::1;:33:::0;2519:82:::1;;;;-1:-1:-1::0;;;2519:82:6::1;;;;;;;:::i;:::-;2605:15;2623:24:::0;;;:10:::1;:24;::::0;;;;;;;;2651:15;;::::1;:25:::0;;;2700:3:::1;2680:17;::::0;::::1;:23:::0;;;2707:13:::1;::::0;::::1;:19:::0;2730;;;;;;:32;;-1:-1:-1;;;;;;2730:32:6::1;2752:10;2730:32;::::0;;-1:-1:-1;;;;;2623:24:6::1;2770:21:::0;;2766:218:::1;;2798:24:::0;;-1:-1:-1;;;;;2798:24:6;::::1;-1:-1:-1::0;;;;;;2798:24:6;;::::1;::::0;::::1;::::0;;:14:::1;2854::::0;;;:5:::1;:14;::::0;;;;;;2873:20:::1;::::0;::::1;:37:::0;;2798:24;2873:37;;::::1;::::0;;;;;;;;::::1;::::0;;;::::1;2899:10;2873:37:::0;;::::1;::::0;;;2915:19:::1;::::0;;::::1;:36:::0;;;;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;::::1;;::::0;;;2956:18;:23;;;;::::1;::::0;;2766:218:::1;2992:34;::::0;3015:10:::1;::::0;-1:-1:-1;;;;;2992:34:6;::::1;::::0;::::1;::::0;;;::::1;1866:1;;2347:683:::0;;:::o;3033:566::-;3101:4;3111:16;;:::i;:::-;-1:-1:-1;;;;;3130:15:6;;;;;;;:5;:15;;;;;;;;;3111:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3130:15;;3111:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3111:34:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3111:34:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3149:19;;:::i;:::-;3177:14;;-1:-1:-1;;;;;3171:21:6;;;;;;;:5;:21;;;;;;;;;3149:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3171:21;;3149:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3149:43:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3149:43:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3196:18;;:::i;:::-;3224:13;;;;;3217:21;;;;:6;:21;;;;;;;;;3196:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3196:42:6;;;;-1:-1:-1;;3267:22:6;;3196:42;;-1:-1:-1;3242:19:6;;3267:22;;:30;;:22;:30;;-1:-1:-1;3267:62:6;;;;;3328:1;3305:5;:20;;;:24;3267:62;:148;;;;;3364:51;3408:6;3364:39;3382:7;:20;;;3364:4;:13;;;:17;;:39;;;;:::i;:::-;:43;;:51::i;:::-;3337:5;:20;;;:78;3267:148;3242:173;;3431:4;:15;;;3430:16;:51;;;;-1:-1:-1;3453:14:6;;-1:-1:-1;;;;;3453:28:6;;;3430:51;:90;;;;-1:-1:-1;3488:8:6;;:32;;-1:-1:-1;;;3488:32:6;;-1:-1:-1;;;;;3488:8:6;;;;:22;;:32;;3511:8;;3488:32;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3430:135;;;;-1:-1:-1;3527:8:6;;3550:14;;3527:38;;-1:-1:-1;;;3527:38:6;;-1:-1:-1;;;;;3527:8:6;;;;:22;;:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3430:165;;;;-1:-1:-1;3572:23:6;;3430:165;3420:175;3033:566;-1:-1:-1;;;;;;3033:566:6:o;1175:20::-;;;-1:-1:-1;;;;;1175:20:6;;:::o;1296:34::-;;;;;;:::o;1059:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1059:37:6;;;;;;;;;;;;;;;;;;:::o;6827:78::-;1607:5;;-1:-1:-1;;;;;1607:5:6;1593:10;:19;;:43;;-1:-1:-1;1630:6:6;;-1:-1:-1;;;;;1630:6:6;1616:10;:20;1593:43;1581:110;;;;-1:-1:-1;;;1581:110:6;;;;;;;:::i;:::-;6885:6:::1;:16:::0;;;::::1;;-1:-1:-1::0;;;6885:16:6::1;-1:-1:-1::0;;;;6885:16:6;;::::1;::::0;;;::::1;::::0;;6827:78::o;5911:659::-;1855:6;;-1:-1:-1;;;1855:6:6;;;;1847:15;;;;;;5987:10:::1;5958:20;5981:17:::0;;;:5:::1;:17;::::0;;;;;6003:564:::1;6027:15;::::0;::::1;:22:::0;6023:26;::::1;6003:564;;;6065:39;6085:7;:15;;6101:1;6085:18;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;6085:18:6::1;6065:19;:39::i;:::-;6061:86;;;6112:29;6122:7;:15;;6138:1;6122:18;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;6122:18:6::1;6112:9;:29::i;:::-;6155:5;:25;6161:7;:15;;6177:1;6161:18;;;;;;;;;::::0;;;::::1;::::0;;;;;::::1;::::0;-1:-1:-1;;;;;6161:18:6::1;6155:25:::0;;;::::1;::::0;;;;;;;;:36:::1;;::::0;::::1;;6151:412;;;6271:15;::::0;::::1;:22:::0;-1:-1:-1;;6271:26:6;:30;-1:-1:-1;6267:226:6::1;;;6331:15;::::0;::::1;6354:22:::0;;-1:-1:-1;;6354:26:6;;;6331:56;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;6310:15:::1;::::0;::::1;:18:::0;;-1:-1:-1;;;;;6331:56:6;;::::1;::::0;6326:1;;6310:18;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;:77:::0;;-1:-1:-1;;;;;;6310:77:6::1;-1:-1:-1::0;;;;;6310:77:6;;;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;6483:3:6;6267:226:::1;6536:7;:15;;:21;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;6536:21:6;;;;;-1:-1:-1;;;;;;6536:21:6::1;::::0;;;;;6151:412:::1;6051:3;;6003:564;;;;1866:1;5911:659::o:0;1132:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;4618:1198::-;1855:6;;-1:-1:-1;;;1855:6:6;;;;1847:15;;;;;;4687:29:::1;4707:8;4687:19;:29::i;:::-;4675:84;;;;-1:-1:-1::0;;;4675:84:6::1;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;4784:15:6;;::::1;4764:17;4784:15:::0;;;:5:::1;:15;::::0;;;;;4832:14;;;;::::1;4826:21:::0;;;;4851:18:::1;;:::i;:::-;4879:13;::::0;;::::1;::::0;4872:21:::1;::::0;;;:6:::1;:21;::::0;;;;;;;;4851:42;;::::1;::::0;::::1;::::0;;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;;::::1;::::0;::::1;::::0;;;;;;;;;::::1;::::0;;;;;;4872:21;;4851:42;;;;;::::1;::::0;::::1;::::0;;;::::1;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;4898:19;4946:1:::0;4923:5:::1;:20;;;:24;:68;;;;;4971:7;:20;;;4955:4;:13;;;:36;4923:68;:188;;;;;5060:51;5104:6;5060:39;5078:7;:20;;;5060:4;:13;;;:17;;:39;;;;:::i;:51::-;5033:5;:20;;;:78;4923:188;5164:15;::::0;::::1;:22:::0;;-1:-1:-1;;5164:22:6::1;5182:4;5164:22:::0;;::::1;::::0;;;5190:28:::1;::::0;::::1;:33:::0;;;::::1;::::0;;5250:12:::1;::::0;::::1;::::0;5227:19:::1;::::0;;::::1;:35:::0;;;::::1;::::0;;5266:31;;;;::::1;::::0;;;5301:23;:39;;;;::::1;::::0;;5381:12;;4898:213;;-1:-1:-1;5164:15:6::1;::::0;5381:16;;;;:67:::1;;-1:-1:-1::0;5436:12:6;;5404:28:::1;::::0;::::1;::::0;:44:::1;;5381:67;:97;;;;-1:-1:-1::0;5455:23:6;::::1;5381:97;5373:192;;;-1:-1:-1::0;5488:13:6::1;::::0;::::1;:18:::0;;5505:1:::1;5488:18:::0;;::::1;::::0;;;5534:3:::1;5511:20;::::0;::::1;:26:::0;5373:192:::1;5569:10;::::0;5589:14;;5605:12:::1;::::0;::::1;::::0;5569:49:::1;::::0;-1:-1:-1;;;5569:49:6;;-1:-1:-1;;;;;5569:10:6;;::::1;::::0;:19:::1;::::0;:49:::1;::::0;5589:14;::::1;::::0;5569:49:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;5622:10:6::1;::::0;5652:12:::1;::::0;::::1;::::0;-1:-1:-1;;;;;5622:10:6;;::::1;::::0;:19:::1;::::0;5642:8;;5652:19:::1;::::0;5669:1:::1;5652:16;:19::i;:::-;5622:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;5730:14:6;;5762:12:::1;::::0;::::1;::::0;5779:13:::1;::::0;::::1;::::0;5712:100:::1;::::0;-1:-1:-1;;;;;5712:100:6;;::::1;::::0;5730:14:::1;::::0;5712:100:::1;::::0;::::1;::::0;5797:11;;5712:100:::1;:::i;:::-;;;;;;;;1866:1;;;;;4618:1198:::0;:::o;6573:251::-;1607:5;;-1:-1:-1;;;;;1607:5:6;1593:10;:19;;:43;;-1:-1:-1;1630:6:6;;-1:-1:-1;;;;;1630:6:6;1616:10;:20;1593:43;1581:110;;;;-1:-1:-1;;;1581:110:6;;;;;;;:::i;:::-;6700:17:::1;6720:12:::0;;;:6:::1;:12;::::0;;;;;6736:20;;;6760:18:::1;::::0;::::1;:36:::0;;;;6800:10:::1;;:20:::0;6573:251::o;1011:45::-;;;;;;;;;;;;-1:-1:-1;;;;;1011:45:6;;:::o;1874:351::-;1472:13:16;;;;;;;;:33;;;1489:16;:14;:16::i;:::-;1472:50;;;-1:-1:-1;1510:12:16;;;;1509:13;1472:50;1464:109;;;;-1:-1:-1;;;1464:109:16;;;;;;;:::i;:::-;1584:19;1607:13;;;;;;1606:14;1630:98;;;;1664:13;:20;;-1:-1:-1;;;;1664:20:16;;;;;1698:19;1680:4;1698:19;;;1630:98;2007:5:6::1;:18:::0;;2015:10:::1;-1:-1:-1::0;;;;;;2007:18:6;;::::1;;::::0;;;2029:8:::1;:31:::0;;;::::1;-1:-1:-1::0;;;;;2029:31:6;;::::1;::::0;;;::::1;::::0;;;2064:6:::1;:13:::0;;-1:-1:-1;2101:9:6;;:6:::1;:9;::::0;2114:10;:25;;;-1:-1:-1;;;;;;;2064:13:6;;::::1;;2143:24:::0;::::1;::::0;;::::1;;::::0;;2171:6:::1;:16:::0;;;;::::1;::::0;;::::1;;::::0;;2191:22:::1;:30:::0;;-1:-1:-1;;2191:30:6::1;::::0;;1750:66:16;;;;1800:5;1784:21;;-1:-1:-1;;1784:21:16;;;1750:66;1874:351:6;;;;;:::o;1274:18::-;;;;;;;;:::o;3729:502::-;3802:16;3825:24;3852:5;:15;3858:8;-1:-1:-1;;;;;3852:15:6;-1:-1:-1;;;;;3852:15:6;;;;;;;;;;;;:23;;3825:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3825:50:6;;;;;;;;;;;;;;;;;;;;;;;3879:11;3898:13;3924:9;3919:104;3939:7;:14;3935:1;:18;3919:104;;;3970:5;:17;3976:7;3984:1;3976:10;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3970:17:6;;;;;;;;;;;-1:-1:-1;3970:17:6;:28;;;;;3965:54;;4006:7;;;;;3965:54;3955:3;;3919:104;;;;4027:23;4067:5;4053:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4053:20:6;;4027:46;;4083:9;4078:132;4098:7;:14;4094:1;:18;4078:132;;;4129:5;:17;4135:7;4143:1;4135:10;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4129:17:6;;;;;;;;;;;-1:-1:-1;4129:17:6;:28;;;;;4124:82;;4179:7;4187:1;4179:10;;;;;;;;;;;;;;4165:6;4172:3;4165:11;;;;;;;;-1:-1:-1;;;;;4165:24:6;;;:11;;;;;;;;;;;:24;4195:5;;;;;4124:82;4114:3;;4078:132;;;-1:-1:-1;4221:6:6;3729:502;-1:-1:-1;;;;;3729:502:6:o;3602:124::-;-1:-1:-1;;;;;3698:15:6;;;;;;:5;:15;;;;;;;;;:24;;3691:31;;;;;;;;;;;;;;;;;3668:16;;3691:31;;;3698:24;3691:31;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3691:31:6;;;;;;;;;;;;;;;;;;;;;;;3602:124;;;:::o;6908:210::-;1607:5;;-1:-1:-1;;;;;1607:5:6;1593:10;:19;;:43;;-1:-1:-1;1630:6:6;;-1:-1:-1;;;;;1630:6:6;1616:10;:20;1593:43;1581:110;;;;-1:-1:-1;;;1581:110:6;;;;;;;:::i;:::-;1855:6:::1;::::0;-1:-1:-1;;;1855:6:6;::::1;;;1847:15;;;::::0;::::1;;6977:10:::2;::::0;:35:::2;::::0;-1:-1:-1;;;6977:35:6;;6957:17:::2;::::0;-1:-1:-1;;;;;6977:10:6::2;::::0;:20:::2;::::0;:35:::2;::::0;7006:4:::2;::::0;6977:35:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7016:10;::::0;7036:6:::2;::::0;7016:38:::2;::::0;-1:-1:-1;;;7016:38:6;;6957:55;;-1:-1:-1;;;;;;7016:10:6;;::::2;::::0;:19:::2;::::0;:38:::2;::::0;7036:6:::2;::::0;6957:55;;7016:38:::2;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7058:6:6::2;::::0;:38:::2;::::0;-1:-1:-1;;;;;7058:6:6;;::::2;::::0;7074:21:::2;7058:38:::0;::::2;;;::::0;:6:::2;:38:::0;:6;:38;7074:21;7058:6;:38;::::2;;;;;;;;;;;;;::::0;::::2;;;;;-1:-1:-1::0;;7100:6:6::2;:14:::0;;-1:-1:-1;;;;7100:14:6::2;::::0;;6908:210::o;1340:134:15:-;1398:7;1424:43;1428:1;1431;1424:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1417:50;1340:134;-1:-1:-1;;;1340:134:15:o;3120:130::-;3178:7;3204:39;3208:1;3211;3204:39;;;;;;;;;;;;;;;;;:3;:39::i;1912:593:16:-;2348:4;2456:17;2491:7;1912:593;:::o;1765:187:15:-;1851:7;1886:12;1878:6;;;;1870:29;;;;-1:-1:-1;;;1870:29:15;;;;;;;;:::i;:::-;-1:-1:-1;;;1921:5:15;;;1765:187::o;3732:272::-;3818:7;3852:12;3845:5;3837:28;;;;-1:-1:-1;;;3837:28:15;;;;;;;;:::i;:::-;;3875:9;3891:1;3887;:5;;;;;;;3732:272;-1:-1:-1;;;;;3732:272:15:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;976:241::-;;1080:2;1068:9;1059:7;1055:23;1051:32;1048:2;;;-1:-1;;1086:12;1048:2;85:6;72:20;97:33;124:5;97:33;:::i;1224:633::-;;;;;1387:3;1375:9;1366:7;1362:23;1358:33;1355:2;;;-1:-1;;1394:12;1355:2;230:6;217:20;242:41;277:5;242:41;:::i;:::-;1446:71;-1:-1;1554:2;1593:22;;72:20;97:33;72:20;97:33;:::i;:::-;1562:63;-1:-1;1662:2;1701:22;;72:20;97:33;72:20;97:33;:::i;:::-;1349:508;;;;-1:-1;1670:63;;1770:2;1809:22;765:20;;-1:-1;;1349:508::o;1864:235::-;;1965:2;1953:9;1944:7;1940:23;1936:32;1933:2;;;-1:-1;;1971:12;1933:2;372:6;359:20;384:30;408:5;384:30;:::i;2106:257::-;;2218:2;2206:9;2197:7;2193:23;2189:32;2186:2;;;-1:-1;;2224:12;2186:2;507:6;501:13;519:30;543:5;519:30;:::i;2370:241::-;;2474:2;2462:9;2453:7;2449:23;2445:32;2442:2;;;-1:-1;;2480:12;2442:2;-1:-1;628:20;;2436:175;-1:-1;2436:175::o;2618:366::-;;;2739:2;2727:9;2718:7;2714:23;2710:32;2707:2;;;-1:-1;;2745:12;2707:2;-1:-1;;628:20;;;2897:2;2936:22;;;628:20;;-1:-1;2701:283::o;3239:263::-;;3354:2;3342:9;3333:7;3329:23;3325:32;3322:2;;;-1:-1;;3360:12;3322:2;-1:-1;913:13;;3316:186;-1:-1;3316:186::o;3509:617::-;;;;;3664:3;3652:9;3643:7;3639:23;3635:33;3632:2;;;-1:-1;;3671:12;3632:2;-1:-1;;765:20;;;3823:2;3862:22;;765:20;;-1:-1;3931:2;3970:22;;765:20;;4039:2;4078:22;765:20;;-1:-1;3626:500;-1:-1;3626:500::o;8386:222::-;-1:-1;;;;;16578:54;;;;4551:45;;8513:2;8498:18;;8484:124::o;8876:349::-;-1:-1;;;;;16578:54;;;;4394:58;;9211:2;9196:18;;5749:37;9039:2;9024:18;;9010:215::o;9232:992::-;-1:-1;;;;;16578:54;;;;4551:45;;9714:2;9699:18;;5749:37;;;;16411:13;;16404:21;9791:2;9776:18;;5632:34;9874:2;9859:18;;5749:37;;;;9957:3;9942:19;;5749:37;16589:42;10026:19;;5749:37;10125:3;10110:19;;5749:37;10209:3;10194:19;;5749:37;9549:3;9534:19;;9520:704::o;10571:370::-;10748:2;10762:47;;;15497:12;;10733:18;;;15901:19;;;10571:370;;10748:2;15351:14;;;;15941;;;;10571:370;5277:260;5302:6;5299:1;5296:13;5277:260;;;5363:13;;-1:-1;;;;;16578:54;4551:45;;15756:14;;;;4287;;;;16589:42;5317:9;5277:260;;;-1:-1;10815:116;;10719:222;-1:-1;;;;;;10719:222::o;10948:210::-;16411:13;;16404:21;5632:34;;11069:2;11054:18;;11040:118::o;11685:310::-;;11832:2;;11853:17;11846:47;6271:5;15497:12;15913:6;11832:2;11821:9;11817:18;15901:19;-1:-1;17754:101;17768:6;17765:1;17762:13;17754:101;;;17835:11;;;;;17829:18;17816:11;;;15941:14;17816:11;17809:39;17783:10;;17754:101;;;17870:6;17867:1;17864:13;17861:2;;;-1:-1;15941:14;17926:6;11821:9;17917:16;;17910:27;17861:2;-1:-1;18042:7;18026:14;-1:-1;;18022:28;6429:39;;;;15941:14;6429:39;;11803:192;-1:-1;;;11803:192::o;12002:416::-;12202:2;12216:47;;;6705:2;12187:18;;;15901:19;6741:34;15941:14;;;6721:55;-1:-1;;;6796:12;;;6789:38;6846:12;;;12173:245::o;12425:416::-;12625:2;12639:47;;;7097:2;12610:18;;;15901:19;-1:-1;;;15941:14;;;7113:42;7174:12;;;12596:245::o;12848:416::-;13048:2;13062:47;;;7425:2;13033:18;;;15901:19;7461:34;15941:14;;;7441:55;-1:-1;;;7516:12;;;7509:36;7564:12;;;13019:245::o;13271:416::-;13471:2;13485:47;;;7815:2;13456:18;;;15901:19;7851:28;15941:14;;;7831:49;7899:12;;;13442:245::o;13694:416::-;13894:2;13908:47;;;13879:18;;;15901:19;8186:34;15941:14;;;8166:55;8240:12;;;13865:245::o;14117:222::-;5749:37;;;14244:2;14229:18;;14215:124::o;14346:432::-;5749:37;;;14687:2;14672:18;;5749:37;;;;16411:13;16404:21;14764:2;14749:18;;5632:34;14523:2;14508:18;;14494:284::o;14785:444::-;5749:37;;;15132:2;15117:18;;5749:37;;;;15215:2;15200:18;;5749:37;14968:2;14953:18;;14939:290::o;18063:117::-;-1:-1;;;;;16578:54;;18122:35;;18112:2;;18171:1;;18161:12;18112:2;18106:74;:::o;18327:111::-;18408:5;16411:13;16404:21;18386:5;18383:32;18373:2;;18429:1;;18419:12",
  "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0;\n\npragma experimental ABIEncoderV2;\n\nimport \"@openzeppelin/contracts-upgradeable/proxy/Initializable.sol\";\nimport \"@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol\";\nimport \"../Interfaces.sol\";\n\n/**\n * @title InvitesV1 contract that handles invites with pre allocated bounty pool\n * 1.1 adds invitee bonus\n */\ncontract InvitesV1 is Initializable {\n\tusing SafeMathUpgradeable for uint256;\n\n\tstruct Stats {\n\t\tuint256 totalApprovedInvites;\n\t\tuint256 totalBountiesPaid;\n\t\tuint256 totalInvited;\n\t\tuint256[5] __reserevedSpace;\n\t}\n\n\tstruct User {\n\t\taddress invitedBy;\n\t\tbytes32 inviteCode;\n\t\tbool bountyPaid;\n\t\taddress[] invitees;\n\t\taddress[] pending;\n\t\tuint256 level;\n\t\tuint256 levelStarted;\n\t\tuint256 totalApprovedInvites;\n\t\tuint256 totalEarned;\n\t\tuint256 joinedAt;\n\t\tuint256[5] __reserevedSpace;\n\t}\n\n\tstruct Level {\n\t\tuint256 toNext;\n\t\tuint256 bounty; //in G$ cents ie 2 decimals\n\t\tuint256 daysToComplete;\n\t\tuint256[5] __reserevedSpace;\n\t}\n\n\tmapping(bytes32 => address) public codeToUser;\n\tmapping(address => User) public users;\n\taddress payable public avatar;\n\n\tmapping(uint256 => Level) public levels;\n\n\taddress public owner;\n\tIIdentity public identity;\n\tcERC20 public goodDollar;\n\tbool public active;\n\tStats public stats;\n\n\tbool public levelExpirationEnabled;\n\n\tevent InviteeJoined(address indexed inviter, address indexed invitee);\n\tevent InviterBounty(\n\t\taddress indexed inviter,\n\t\taddress indexed invitee,\n\t\tuint256 bountyPaid,\n\t\tuint256 inviterLevel,\n\t\tbool earnedLevel\n\t);\n\n\tmodifier ownerOrAvatar() {\n\t\trequire(\n\t\t\tmsg.sender == owner || msg.sender == avatar,\n\t\t\t\"Only owner or avatar can perform this action\"\n\t\t);\n\t\t_;\n\t}\n\n\tmodifier onlyAvatar() {\n\t\trequire(\n\t\t\tmsg.sender == avatar,\n\t\t\t\"Only DAO avatar can perform this action\"\n\t\t);\n\t\t_;\n\t}\n\n\tmodifier isActive() {\n\t\trequire(active);\n\t\t_;\n\t}\n\n\tfunction initialize(\n\t\taddress payable _avatar,\n\t\taddress _identity,\n\t\taddress _gd,\n\t\tuint256 level0Bounty\n\t) public initializer {\n\t\towner = msg.sender;\n\t\tidentity = IIdentity(_identity);\n\t\tactive = true;\n\t\tLevel storage lvl = levels[0];\n\t\tlvl.bounty = level0Bounty;\n\t\tgoodDollar = cERC20(_gd);\n\t\tavatar = _avatar;\n\t\tlevelExpirationEnabled = false;\n\t}\n\n\tfunction setLevelExpirationEnabled(bool _isEnabled) public ownerOrAvatar {\n\t\tlevelExpirationEnabled = _isEnabled;\n\t}\n\n\tfunction join(bytes32 _myCode, bytes32 _inviterCode) public isActive {\n\t\tUser storage user = users[msg.sender];\n\t\trequire(user.inviteCode == 0x0, \"user already joined\");\n\t\trequire(\n\t\t\tcodeToUser[_myCode] == address(0),\n\t\t\t\"invite code already in use\"\n\t\t);\n\t\taddress inviter = codeToUser[_inviterCode];\n\t\tuser.inviteCode = _myCode;\n\t\tuser.levelStarted = now;\n\t\tuser.joinedAt = now;\n\t\tcodeToUser[_myCode] = msg.sender;\n\t\tif (inviter != address(0)) {\n\t\t\tuser.invitedBy = inviter;\n\t\t\tUser storage inviterUser = users[inviter];\n\t\t\tinviterUser.invitees.push(msg.sender);\n\t\t\tinviterUser.pending.push(msg.sender);\n\t\t\tstats.totalInvited += 1;\n\t\t}\n\t\temit InviteeJoined(inviter, msg.sender);\n\t}\n\n\tfunction canCollectBountyFor(address _invitee) public view returns (bool) {\n\t\tUser memory user = users[_invitee];\n\t\tUser memory inviter = users[user.invitedBy];\n\t\tLevel memory level = levels[inviter.level];\n\t\tbool isLevelExpired =\n\t\t\tlevelExpirationEnabled == true &&\n\t\t\t\tlevel.daysToComplete > 0 &&\n\t\t\t\tlevel.daysToComplete <\n\t\t\t\tuser.joinedAt.sub(inviter.levelStarted).div(1 days);\n\n\t\treturn\n\t\t\t!user.bountyPaid &&\n\t\t\tuser.invitedBy != address(0) &&\n\t\t\tidentity.isWhitelisted(_invitee) &&\n\t\t\tidentity.isWhitelisted(user.invitedBy) &&\n\t\t\tisLevelExpired == false;\n\t}\n\n\tfunction getInvitees(address _inviter)\n\t\tpublic\n\t\tview\n\t\treturns (address[] memory)\n\t{\n\t\treturn users[_inviter].invitees;\n\t}\n\n\tfunction getPendingInvitees(address _inviter)\n\t\tpublic\n\t\tview\n\t\treturns (address[] memory)\n\t{\n\t\taddress[] memory pending = users[_inviter].pending;\n\t\tuint256 cur = 0;\n\t\tuint256 total = 0;\n\t\tfor (uint256 i; i < pending.length; i++) {\n\t\t\tif (!users[pending[i]].bountyPaid) {\n\t\t\t\ttotal++;\n\t\t\t}\n\t\t}\n\n\t\taddress[] memory result = new address[](total);\n\n\t\tfor (uint256 i; i < pending.length; i++) {\n\t\t\tif (!users[pending[i]].bountyPaid) {\n\t\t\t\tresult[cur] = pending[i];\n\t\t\t\tcur++;\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tfunction getPendingBounties(address _inviter)\n\t\tpublic\n\t\tview\n\t\treturns (uint256)\n\t{\n\t\taddress[] memory pending = users[_inviter].pending;\n\t\tuint256 total = 0;\n\t\tfor (uint256 i; i < pending.length; i++) {\n\t\t\tif (canCollectBountyFor(pending[i])) {\n\t\t\t\ttotal++;\n\t\t\t}\n\t\t}\n\t\treturn total;\n\t}\n\n\t/**\n\t * @dev  pay bounty for the inviter of _invitee\n\t * invitee need to be whitelisted\n\t */\n\tfunction bountyFor(address _invitee) public isActive {\n\t\trequire(\n\t\t\tcanCollectBountyFor(_invitee),\n\t\t\t\"user not elligble for bounty yet\"\n\t\t);\n\n\t\tUser storage user = users[_invitee];\n\t\tUser storage inviter = users[user.invitedBy];\n\t\tLevel memory level = levels[inviter.level];\n\n\t\tbool isLevelExpired =\n\t\t\tlevel.daysToComplete > 0 &&\n\t\t\t\tuser.joinedAt > inviter.levelStarted && //prevent overflow in subtraction\n\t\t\t\tlevel.daysToComplete <\n\t\t\t\tuser.joinedAt.sub(inviter.levelStarted).div(1 days); //how long after level started did invitee join\n\n\t\tuser.bountyPaid = true;\n\t\tinviter.totalApprovedInvites += 1;\n\t\tinviter.totalEarned += level.bounty;\n\t\tstats.totalApprovedInvites += 1;\n\t\tstats.totalBountiesPaid += level.bounty;\n\n\t\tbool earnedLevel = false;\n\t\tif (\n\t\t\tlevel.toNext > 0 &&\n\t\t\tinviter.totalApprovedInvites >= level.toNext &&\n\t\t\tisLevelExpired == false\n\t\t) {\n\t\t\tinviter.level += 1;\n\t\t\tinviter.levelStarted = now;\n\t\t\tearnedLevel = true;\n\t\t}\n\n\t\tgoodDollar.transfer(user.invitedBy, level.bounty);\n\t\tgoodDollar.transfer(_invitee, level.bounty.div(2)); //pay invitee half the bounty\n\n\t\temit InviterBounty(\n\t\t\tuser.invitedBy,\n\t\t\t_invitee,\n\t\t\tlevel.bounty,\n\t\t\tinviter.level,\n\t\t\tearnedLevel\n\t\t);\n\t}\n\n\t/**\n     @dev collect bounties for invitees by msg.sender that are now whitelisted\n     */\n\tfunction collectBounties() public isActive {\n\t\tUser storage inviter = users[msg.sender];\n\n\t\tfor (uint256 i = 0; i < inviter.pending.length; i++) {\n\t\t\tif (canCollectBountyFor(inviter.pending[i])) {\n\t\t\t\tbountyFor(inviter.pending[i]);\n\t\t\t}\n\t\t\tif (users[inviter.pending[i]].bountyPaid) {\n\t\t\t\t//if still elements in array move last item to current position\n\t\t\t\tif (inviter.pending.length - 1 > i) {\n\t\t\t\t\tinviter.pending[i] = inviter.pending[\n\t\t\t\t\t\tinviter.pending.length - 1\n\t\t\t\t\t];\n\n\t\t\t\t\t//force loop to do current position again so we dont miss the just moved last item\n\t\t\t\t\ti--;\n\t\t\t\t}\n\n\t\t\t\t//extract item from pendig array\n\t\t\t\tinviter.pending.pop();\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction setLevel(\n\t\tuint256 _lvl,\n\t\tuint256 _toNext,\n\t\tuint256 _bounty,\n\t\tuint256 _daysToComplete\n\t) public ownerOrAvatar {\n\t\tLevel storage lvl = levels[_lvl];\n\t\tlvl.toNext = _toNext;\n\t\tlvl.daysToComplete = _daysToComplete;\n\t\tlvl.bounty = _bounty;\n\t}\n\n\tfunction setActive(bool _active) public ownerOrAvatar {\n\t\tactive = _active;\n\t}\n\n\tfunction end() public ownerOrAvatar isActive {\n\t\tuint256 gdBalance = goodDollar.balanceOf(address(this));\n\t\tgoodDollar.transfer(avatar, gdBalance);\n\t\tavatar.transfer(address(this).balance);\n\t\tactive = false;\n\t}\n\n\t/**\n\t * @dev\n\t * 1.2.0 - final changes before release\n\t */\n\tfunction version() public pure returns (string memory) {\n\t\treturn \"1.2.0\";\n\t}\n}\n",
  "sourcePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/invite/InvitesV1.sol",
  "ast": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/invite/InvitesV1.sol",
    "exportedSymbols": {
      "InvitesV1": [
        4767
      ]
    },
    "id": 4768,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3861,
        "literals": [
          "solidity",
          ">=",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:24:6"
      },
      {
        "id": 3862,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "59:33:6"
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/Initializable.sol",
        "file": "@openzeppelin/contracts-upgradeable/proxy/Initializable.sol",
        "id": 3863,
        "nodeType": "ImportDirective",
        "scope": 4768,
        "sourceUnit": 8212,
        "src": "94:69:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol",
        "id": 3864,
        "nodeType": "ImportDirective",
        "scope": 4768,
        "sourceUnit": 8141,
        "src": "164:74:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/Interfaces.sol",
        "file": "../Interfaces.sol",
        "id": 3865,
        "nodeType": "ImportDirective",
        "scope": 4768,
        "sourceUnit": 552,
        "src": "239:27:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3867,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8211,
              "src": "405:13:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$8211",
                "typeString": "contract Initializable"
              }
            },
            "id": 3868,
            "nodeType": "InheritanceSpecifier",
            "src": "405:13:6"
          }
        ],
        "contractDependencies": [
          8211
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 3866,
          "nodeType": "StructuredDocumentation",
          "src": "268:114:6",
          "text": " @title InvitesV1 contract that handles invites with pre allocated bounty pool\n 1.1 adds invitee bonus"
        },
        "fullyImplemented": true,
        "id": 4767,
        "linearizedBaseContracts": [
          4767,
          8211
        ],
        "name": "InvitesV1",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 3871,
            "libraryName": {
              "contractScope": null,
              "id": 3869,
              "name": "SafeMathUpgradeable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8140,
              "src": "428:19:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMathUpgradeable_$8140",
                "typeString": "library SafeMathUpgradeable"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "422:38:6",
            "typeName": {
              "id": 3870,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "452:7:6",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "canonicalName": "InvitesV1.Stats",
            "id": 3882,
            "members": [
              {
                "constant": false,
                "id": 3873,
                "mutability": "mutable",
                "name": "totalApprovedInvites",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3882,
                "src": "480:28:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3872,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "480:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3875,
                "mutability": "mutable",
                "name": "totalBountiesPaid",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3882,
                "src": "512:25:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3874,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "512:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3877,
                "mutability": "mutable",
                "name": "totalInvited",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3882,
                "src": "541:20:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3876,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "541:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3881,
                "mutability": "mutable",
                "name": "__reserevedSpace",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3882,
                "src": "565:27:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                  "typeString": "uint256[5]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3878,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "565:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3880,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "35",
                    "id": 3879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "573:1:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_5_by_1",
                      "typeString": "int_const 5"
                    },
                    "value": "5"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "565:10:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                    "typeString": "uint256[5]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Stats",
            "nodeType": "StructDefinition",
            "scope": 4767,
            "src": "463:133:6",
            "visibility": "public"
          },
          {
            "canonicalName": "InvitesV1.User",
            "id": 3909,
            "members": [
              {
                "constant": false,
                "id": 3884,
                "mutability": "mutable",
                "name": "invitedBy",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "615:17:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 3883,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "615:7:6",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3886,
                "mutability": "mutable",
                "name": "inviteCode",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "636:18:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 3885,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "636:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3888,
                "mutability": "mutable",
                "name": "bountyPaid",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "658:15:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 3887,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "658:4:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3891,
                "mutability": "mutable",
                "name": "invitees",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "677:18:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3889,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "677:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3890,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "677:9:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                    "typeString": "address[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3894,
                "mutability": "mutable",
                "name": "pending",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "699:17:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3892,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "699:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3893,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "699:9:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                    "typeString": "address[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3896,
                "mutability": "mutable",
                "name": "level",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "720:13:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3895,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "720:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3898,
                "mutability": "mutable",
                "name": "levelStarted",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "737:20:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3897,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "737:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3900,
                "mutability": "mutable",
                "name": "totalApprovedInvites",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "761:28:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3899,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "761:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3902,
                "mutability": "mutable",
                "name": "totalEarned",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "793:19:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3901,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "793:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3904,
                "mutability": "mutable",
                "name": "joinedAt",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "816:16:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3903,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "816:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3908,
                "mutability": "mutable",
                "name": "__reserevedSpace",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "836:27:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                  "typeString": "uint256[5]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3905,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "836:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3907,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "35",
                    "id": 3906,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "844:1:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_5_by_1",
                      "typeString": "int_const 5"
                    },
                    "value": "5"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "836:10:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                    "typeString": "uint256[5]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "User",
            "nodeType": "StructDefinition",
            "scope": 4767,
            "src": "599:268:6",
            "visibility": "public"
          },
          {
            "canonicalName": "InvitesV1.Level",
            "id": 3920,
            "members": [
              {
                "constant": false,
                "id": 3911,
                "mutability": "mutable",
                "name": "toNext",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3920,
                "src": "887:14:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3910,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "887:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3913,
                "mutability": "mutable",
                "name": "bounty",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3920,
                "src": "905:14:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3912,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "905:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3915,
                "mutability": "mutable",
                "name": "daysToComplete",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3920,
                "src": "951:22:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3914,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "951:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3919,
                "mutability": "mutable",
                "name": "__reserevedSpace",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3920,
                "src": "977:27:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                  "typeString": "uint256[5]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3916,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "977:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3918,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "35",
                    "id": 3917,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "985:1:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_5_by_1",
                      "typeString": "int_const 5"
                    },
                    "value": "5"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "977:10:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                    "typeString": "uint256[5]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Level",
            "nodeType": "StructDefinition",
            "scope": 4767,
            "src": "870:138:6",
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "ba6f5680",
            "id": 3924,
            "mutability": "mutable",
            "name": "codeToUser",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1011:45:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 3923,
              "keyType": {
                "id": 3921,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1019:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1011:27:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 3922,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1030:7:6",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "a87430ba",
            "id": 3928,
            "mutability": "mutable",
            "name": "users",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1059:37:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
              "typeString": "mapping(address => struct InvitesV1.User)"
            },
            "typeName": {
              "id": 3927,
              "keyType": {
                "id": 3925,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1067:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1059:24:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                "typeString": "mapping(address => struct InvitesV1.User)"
              },
              "valueType": {
                "contractScope": null,
                "id": 3926,
                "name": "User",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 3909,
                "src": "1078:4:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                  "typeString": "struct InvitesV1.User"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "5aef7de6",
            "id": 3930,
            "mutability": "mutable",
            "name": "avatar",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1099:29:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address_payable",
              "typeString": "address payable"
            },
            "typeName": {
              "id": 3929,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1099:15:6",
              "stateMutability": "payable",
              "typeDescriptions": {
                "typeIdentifier": "t_address_payable",
                "typeString": "address payable"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "b2596a67",
            "id": 3934,
            "mutability": "mutable",
            "name": "levels",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1132:39:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Level_$3920_storage_$",
              "typeString": "mapping(uint256 => struct InvitesV1.Level)"
            },
            "typeName": {
              "id": 3933,
              "keyType": {
                "id": 3931,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1140:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1132:25:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Level_$3920_storage_$",
                "typeString": "mapping(uint256 => struct InvitesV1.Level)"
              },
              "valueType": {
                "contractScope": null,
                "id": 3932,
                "name": "Level",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 3920,
                "src": "1151:5:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                  "typeString": "struct InvitesV1.Level"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "8da5cb5b",
            "id": 3936,
            "mutability": "mutable",
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1175:20:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3935,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1175:7:6",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "2c159a1a",
            "id": 3938,
            "mutability": "mutable",
            "name": "identity",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1198:25:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IIdentity_$513",
              "typeString": "contract IIdentity"
            },
            "typeName": {
              "contractScope": null,
              "id": 3937,
              "name": "IIdentity",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 513,
              "src": "1198:9:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IIdentity_$513",
                "typeString": "contract IIdentity"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "119e5bf3",
            "id": 3940,
            "mutability": "mutable",
            "name": "goodDollar",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1226:24:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_cERC20_$309",
              "typeString": "contract cERC20"
            },
            "typeName": {
              "contractScope": null,
              "id": 3939,
              "name": "cERC20",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 309,
              "src": "1226:6:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_cERC20_$309",
                "typeString": "contract cERC20"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "02fb0c5e",
            "id": 3942,
            "mutability": "mutable",
            "name": "active",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1253:18:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 3941,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1253:4:6",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "d80528ae",
            "id": 3944,
            "mutability": "mutable",
            "name": "stats",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1274:18:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Stats_$3882_storage",
              "typeString": "struct InvitesV1.Stats"
            },
            "typeName": {
              "contractScope": null,
              "id": 3943,
              "name": "Stats",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3882,
              "src": "1274:5:6",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Stats_$3882_storage_ptr",
                "typeString": "struct InvitesV1.Stats"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "a1df6fd3",
            "id": 3946,
            "mutability": "mutable",
            "name": "levelExpirationEnabled",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1296:34:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 3945,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1296:4:6",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3952,
            "name": "InviteeJoined",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3951,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3948,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "inviter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3952,
                  "src": "1354:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3947,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1354:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3950,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "invitee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3952,
                  "src": "1379:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3949,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1379:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1353:50:6"
            },
            "src": "1334:70:6"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3964,
            "name": "InviterBounty",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3954,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "inviter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3964,
                  "src": "1429:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3953,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1429:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3956,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "invitee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3964,
                  "src": "1456:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3955,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1456:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3958,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "bountyPaid",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3964,
                  "src": "1483:18:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3957,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1483:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3960,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "inviterLevel",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3964,
                  "src": "1505:20:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3959,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1505:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3962,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "earnedLevel",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3964,
                  "src": "1529:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3961,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1529:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1425:123:6"
            },
            "src": "1406:143:6"
          },
          {
            "body": {
              "id": 3980,
              "nodeType": "Block",
              "src": "1577:123:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3975,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3967,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1593:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3968,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1593:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3969,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3936,
                            "src": "1607:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1593:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          "id": 3974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3971,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1616:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3972,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1616:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3973,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3930,
                            "src": "1630:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1616:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1593:43:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d207468697320616374696f6e",
                        "id": 3976,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1641:46:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c25984da557f35037d2891f594d5804eb4670ecdff16d66f4e6af613e4465384",
                          "typeString": "literal_string \"Only owner or avatar can perform this action\""
                        },
                        "value": "Only owner or avatar can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c25984da557f35037d2891f594d5804eb4670ecdff16d66f4e6af613e4465384",
                          "typeString": "literal_string \"Only owner or avatar can perform this action\""
                        }
                      ],
                      "id": 3966,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1581:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1581:110:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3978,
                  "nodeType": "ExpressionStatement",
                  "src": "1581:110:6"
                },
                {
                  "id": 3979,
                  "nodeType": "PlaceholderStatement",
                  "src": "1695:1:6"
                }
              ]
            },
            "documentation": null,
            "id": 3981,
            "name": "ownerOrAvatar",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 3965,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1574:2:6"
            },
            "src": "1552:148:6",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3992,
              "nodeType": "Block",
              "src": "1725:95:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "id": 3987,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3984,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1741:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1741:10:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3986,
                          "name": "avatar",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3930,
                          "src": "1755:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "1741:20:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c792044414f206176617461722063616e20706572666f726d207468697320616374696f6e",
                        "id": 3988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1766:41:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7bce5418ccf131c86ef10cf50737f7535137691c561f6dc76412136411e6f7fb",
                          "typeString": "literal_string \"Only DAO avatar can perform this action\""
                        },
                        "value": "Only DAO avatar can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7bce5418ccf131c86ef10cf50737f7535137691c561f6dc76412136411e6f7fb",
                          "typeString": "literal_string \"Only DAO avatar can perform this action\""
                        }
                      ],
                      "id": 3983,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1729:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1729:82:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3990,
                  "nodeType": "ExpressionStatement",
                  "src": "1729:82:6"
                },
                {
                  "id": 3991,
                  "nodeType": "PlaceholderStatement",
                  "src": "1815:1:6"
                }
              ]
            },
            "documentation": null,
            "id": 3993,
            "name": "onlyAvatar",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 3982,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1722:2:6"
            },
            "src": "1703:117:6",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4000,
              "nodeType": "Block",
              "src": "1843:28:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3996,
                        "name": "active",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3942,
                        "src": "1855:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3995,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1847:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1847:15:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3998,
                  "nodeType": "ExpressionStatement",
                  "src": "1847:15:6"
                },
                {
                  "id": 3999,
                  "nodeType": "PlaceholderStatement",
                  "src": "1866:1:6"
                }
              ]
            },
            "documentation": null,
            "id": 4001,
            "name": "isActive",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 3994,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1840:2:6"
            },
            "src": "1823:48:6",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4055,
              "nodeType": "Block",
              "src": "2003:222:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4014,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3936,
                      "src": "2007:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4015,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "2015:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4016,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2015:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2007:18:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4018,
                  "nodeType": "ExpressionStatement",
                  "src": "2007:18:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4023,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4019,
                      "name": "identity",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3938,
                      "src": "2029:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IIdentity_$513",
                        "typeString": "contract IIdentity"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4021,
                          "name": "_identity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4005,
                          "src": "2050:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 4020,
                        "name": "IIdentity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 513,
                        "src": "2040:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IIdentity_$513_$",
                          "typeString": "type(contract IIdentity)"
                        }
                      },
                      "id": 4022,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2040:20:6",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IIdentity_$513",
                        "typeString": "contract IIdentity"
                      }
                    },
                    "src": "2029:31:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$513",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "id": 4024,
                  "nodeType": "ExpressionStatement",
                  "src": "2029:31:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4027,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4025,
                      "name": "active",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3942,
                      "src": "2064:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4026,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2073:4:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2064:13:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4028,
                  "nodeType": "ExpressionStatement",
                  "src": "2064:13:6"
                },
                {
                  "assignments": [
                    4030
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4030,
                      "mutability": "mutable",
                      "name": "lvl",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4055,
                      "src": "2081:17:6",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                        "typeString": "struct InvitesV1.Level"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4029,
                        "name": "Level",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3920,
                        "src": "2081:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4034,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4031,
                      "name": "levels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3934,
                      "src": "2101:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Level_$3920_storage_$",
                        "typeString": "mapping(uint256 => struct InvitesV1.Level storage ref)"
                      }
                    },
                    "id": 4033,
                    "indexExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4032,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2108:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2101:9:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Level_$3920_storage",
                      "typeString": "struct InvitesV1.Level storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2081:29:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4039,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4035,
                        "name": "lvl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4030,
                        "src": "2114:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level storage pointer"
                        }
                      },
                      "id": 4037,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bounty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3913,
                      "src": "2114:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4038,
                      "name": "level0Bounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4009,
                      "src": "2127:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2114:25:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4040,
                  "nodeType": "ExpressionStatement",
                  "src": "2114:25:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4045,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4041,
                      "name": "goodDollar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3940,
                      "src": "2143:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_cERC20_$309",
                        "typeString": "contract cERC20"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4043,
                          "name": "_gd",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4007,
                          "src": "2163:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 4042,
                        "name": "cERC20",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 309,
                        "src": "2156:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_cERC20_$309_$",
                          "typeString": "type(contract cERC20)"
                        }
                      },
                      "id": 4044,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2156:11:6",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_cERC20_$309",
                        "typeString": "contract cERC20"
                      }
                    },
                    "src": "2143:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_cERC20_$309",
                      "typeString": "contract cERC20"
                    }
                  },
                  "id": 4046,
                  "nodeType": "ExpressionStatement",
                  "src": "2143:24:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4047,
                      "name": "avatar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3930,
                      "src": "2171:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4048,
                      "name": "_avatar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4003,
                      "src": "2180:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2171:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "id": 4050,
                  "nodeType": "ExpressionStatement",
                  "src": "2171:16:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4051,
                      "name": "levelExpirationEnabled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3946,
                      "src": "2191:22:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 4052,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2216:5:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "2191:30:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4054,
                  "nodeType": "ExpressionStatement",
                  "src": "2191:30:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "cf756fdf",
            "id": 4056,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4012,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4011,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8188,
                  "src": "1991:11:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1991:11:6"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4010,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4003,
                  "mutability": "mutable",
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4056,
                  "src": "1897:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 4002,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1897:15:6",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4005,
                  "mutability": "mutable",
                  "name": "_identity",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4056,
                  "src": "1924:17:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4004,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1924:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4007,
                  "mutability": "mutable",
                  "name": "_gd",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4056,
                  "src": "1945:11:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4006,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1945:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4009,
                  "mutability": "mutable",
                  "name": "level0Bounty",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4056,
                  "src": "1960:20:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4008,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1960:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1893:90:6"
            },
            "returnParameters": {
              "id": 4013,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2003:0:6"
            },
            "scope": 4767,
            "src": "1874:351:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4067,
              "nodeType": "Block",
              "src": "2301:43:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4065,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4063,
                      "name": "levelExpirationEnabled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3946,
                      "src": "2305:22:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4064,
                      "name": "_isEnabled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4058,
                      "src": "2330:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2305:35:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4066,
                  "nodeType": "ExpressionStatement",
                  "src": "2305:35:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "21132aad",
            "id": 4068,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4061,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4060,
                  "name": "ownerOrAvatar",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3981,
                  "src": "2287:13:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2287:13:6"
              }
            ],
            "name": "setLevelExpirationEnabled",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4059,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4058,
                  "mutability": "mutable",
                  "name": "_isEnabled",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4068,
                  "src": "2263:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4057,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2263:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2262:17:6"
            },
            "returnParameters": {
              "id": 4062,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2301:0:6"
            },
            "scope": 4767,
            "src": "2228:116:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4185,
              "nodeType": "Block",
              "src": "2416:614:6",
              "statements": [
                {
                  "assignments": [
                    4078
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4078,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4185,
                      "src": "2420:17:6",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                        "typeString": "struct InvitesV1.User"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4077,
                        "name": "User",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3909,
                        "src": "2420:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4083,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4079,
                      "name": "users",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3928,
                      "src": "2440:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                        "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                      }
                    },
                    "id": 4082,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4080,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "2446:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4081,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2446:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2440:17:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$3909_storage",
                      "typeString": "struct InvitesV1.User storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2420:37:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 4088,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4085,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4078,
                            "src": "2469:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                              "typeString": "struct InvitesV1.User storage pointer"
                            }
                          },
                          "id": 4086,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "inviteCode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3886,
                          "src": "2469:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "307830",
                          "id": 4087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2488:3:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0x0"
                        },
                        "src": "2469:22:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7573657220616c7265616479206a6f696e6564",
                        "id": 4089,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2493:21:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8d326376733505fb4fe83bb88b4895d893db8de970ead9841c506347e488829d",
                          "typeString": "literal_string \"user already joined\""
                        },
                        "value": "user already joined"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8d326376733505fb4fe83bb88b4895d893db8de970ead9841c506347e488829d",
                          "typeString": "literal_string \"user already joined\""
                        }
                      ],
                      "id": 4084,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2461:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2461:54:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4091,
                  "nodeType": "ExpressionStatement",
                  "src": "2461:54:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4093,
                            "name": "codeToUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3924,
                            "src": "2531:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                              "typeString": "mapping(bytes32 => address)"
                            }
                          },
                          "id": 4095,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4094,
                            "name": "_myCode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4070,
                            "src": "2542:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2531:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4098,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2562:1:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 4097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2554:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4096,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2554:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 4099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2554:10:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "2531:33:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e7669746520636f646520616c726561647920696e20757365",
                        "id": 4101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2569:28:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cf65944e469ad748eaf1f1c08d09ea64ce8eea0850d47a86975e1c175962a472",
                          "typeString": "literal_string \"invite code already in use\""
                        },
                        "value": "invite code already in use"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cf65944e469ad748eaf1f1c08d09ea64ce8eea0850d47a86975e1c175962a472",
                          "typeString": "literal_string \"invite code already in use\""
                        }
                      ],
                      "id": 4092,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2519:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2519:82:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4103,
                  "nodeType": "ExpressionStatement",
                  "src": "2519:82:6"
                },
                {
                  "assignments": [
                    4105
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4105,
                      "mutability": "mutable",
                      "name": "inviter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4185,
                      "src": "2605:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4104,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2605:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4109,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4106,
                      "name": "codeToUser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3924,
                      "src": "2623:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 4108,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4107,
                      "name": "_inviterCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4072,
                      "src": "2634:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2623:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2605:42:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4110,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4078,
                        "src": "2651:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4112,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "inviteCode",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3886,
                      "src": "2651:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4113,
                      "name": "_myCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4070,
                      "src": "2669:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2651:25:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 4115,
                  "nodeType": "ExpressionStatement",
                  "src": "2651:25:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4116,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4078,
                        "src": "2680:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4118,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "levelStarted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3898,
                      "src": "2680:17:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4119,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -17,
                      "src": "2700:3:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2680:23:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4121,
                  "nodeType": "ExpressionStatement",
                  "src": "2680:23:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4122,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4078,
                        "src": "2707:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4124,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "joinedAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3904,
                      "src": "2707:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4125,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -17,
                      "src": "2723:3:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2707:19:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4127,
                  "nodeType": "ExpressionStatement",
                  "src": "2707:19:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4128,
                        "name": "codeToUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3924,
                        "src": "2730:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 4130,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4129,
                        "name": "_myCode",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4070,
                        "src": "2741:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2730:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4131,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "2752:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4132,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2752:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2730:32:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4134,
                  "nodeType": "ExpressionStatement",
                  "src": "2730:32:6"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 4140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4135,
                      "name": "inviter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4105,
                      "src": "2770:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2789:1:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 4137,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2781:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 4136,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2781:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 4139,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2781:10:6",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2770:21:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4178,
                  "nodeType": "IfStatement",
                  "src": "2766:218:6",
                  "trueBody": {
                    "id": 4177,
                    "nodeType": "Block",
                    "src": "2793:191:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4141,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4078,
                              "src": "2798:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                "typeString": "struct InvitesV1.User storage pointer"
                              }
                            },
                            "id": 4143,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "invitedBy",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3884,
                            "src": "2798:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4144,
                            "name": "inviter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4105,
                            "src": "2815:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2798:24:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4146,
                        "nodeType": "ExpressionStatement",
                        "src": "2798:24:6"
                      },
                      {
                        "assignments": [
                          4148
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4148,
                            "mutability": "mutable",
                            "name": "inviterUser",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4177,
                            "src": "2827:24:6",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                              "typeString": "struct InvitesV1.User"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 4147,
                              "name": "User",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3909,
                              "src": "2827:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                "typeString": "struct InvitesV1.User"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4152,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4149,
                            "name": "users",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3928,
                            "src": "2854:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                              "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                            }
                          },
                          "id": 4151,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4150,
                            "name": "inviter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4105,
                            "src": "2860:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2854:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$3909_storage",
                            "typeString": "struct InvitesV1.User storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2827:41:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4158,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2899:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2899:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4153,
                                "name": "inviterUser",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4148,
                                "src": "2873:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                  "typeString": "struct InvitesV1.User storage pointer"
                                }
                              },
                              "id": 4156,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "invitees",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3891,
                              "src": "2873:20:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 4157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2873:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2873:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4161,
                        "nodeType": "ExpressionStatement",
                        "src": "2873:37:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4167,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2940:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2940:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4162,
                                "name": "inviterUser",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4148,
                                "src": "2915:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                  "typeString": "struct InvitesV1.User storage pointer"
                                }
                              },
                              "id": 4165,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pending",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3894,
                              "src": "2915:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 4166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2915:24:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2915:36:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4170,
                        "nodeType": "ExpressionStatement",
                        "src": "2915:36:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4171,
                              "name": "stats",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3944,
                              "src": "2956:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Stats_$3882_storage",
                                "typeString": "struct InvitesV1.Stats storage ref"
                              }
                            },
                            "id": 4173,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalInvited",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3877,
                            "src": "2956:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2978:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2956:23:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4176,
                        "nodeType": "ExpressionStatement",
                        "src": "2956:23:6"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4180,
                        "name": "inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4105,
                        "src": "3006:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4181,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "3015:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4182,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3015:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 4179,
                      "name": "InviteeJoined",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3952,
                      "src": "2992:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 4183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2992:34:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4184,
                  "nodeType": "EmitStatement",
                  "src": "2987:39:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "5b419a65",
            "id": 4186,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4075,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4074,
                  "name": "isActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4001,
                  "src": "2407:8:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2407:8:6"
              }
            ],
            "name": "join",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4073,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4070,
                  "mutability": "mutable",
                  "name": "_myCode",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4186,
                  "src": "2361:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4069,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2361:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4072,
                  "mutability": "mutable",
                  "name": "_inviterCode",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4186,
                  "src": "2378:20:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4071,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2378:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2360:39:6"
            },
            "returnParameters": {
              "id": 4076,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2416:0:6"
            },
            "scope": 4767,
            "src": "2347:683:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4264,
              "nodeType": "Block",
              "src": "3107:492:6",
              "statements": [
                {
                  "assignments": [
                    4194
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4194,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4264,
                      "src": "3111:16:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                        "typeString": "struct InvitesV1.User"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4193,
                        "name": "User",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3909,
                        "src": "3111:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4198,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4195,
                      "name": "users",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3928,
                      "src": "3130:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                        "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                      }
                    },
                    "id": 4197,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4196,
                      "name": "_invitee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4188,
                      "src": "3136:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3130:15:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$3909_storage",
                      "typeString": "struct InvitesV1.User storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3111:34:6"
                },
                {
                  "assignments": [
                    4200
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4200,
                      "mutability": "mutable",
                      "name": "inviter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4264,
                      "src": "3149:19:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                        "typeString": "struct InvitesV1.User"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4199,
                        "name": "User",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3909,
                        "src": "3149:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4205,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4201,
                      "name": "users",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3928,
                      "src": "3171:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                        "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                      }
                    },
                    "id": 4204,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4202,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4194,
                        "src": "3177:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                          "typeString": "struct InvitesV1.User memory"
                        }
                      },
                      "id": 4203,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "invitedBy",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3884,
                      "src": "3177:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3171:21:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$3909_storage",
                      "typeString": "struct InvitesV1.User storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3149:43:6"
                },
                {
                  "assignments": [
                    4207
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4207,
                      "mutability": "mutable",
                      "name": "level",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4264,
                      "src": "3196:18:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                        "typeString": "struct InvitesV1.Level"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4206,
                        "name": "Level",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3920,
                        "src": "3196:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4212,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4208,
                      "name": "levels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3934,
                      "src": "3217:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Level_$3920_storage_$",
                        "typeString": "mapping(uint256 => struct InvitesV1.Level storage ref)"
                      }
                    },
                    "id": 4211,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4209,
                        "name": "inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4200,
                        "src": "3224:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                          "typeString": "struct InvitesV1.User memory"
                        }
                      },
                      "id": 4210,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "level",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3896,
                      "src": "3224:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3217:21:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Level_$3920_storage",
                      "typeString": "struct InvitesV1.Level storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3196:42:6"
                },
                {
                  "assignments": [
                    4214
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4214,
                      "mutability": "mutable",
                      "name": "isLevelExpired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4264,
                      "src": "3242:19:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4213,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3242:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4236,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 4222,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4217,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4215,
                          "name": "levelExpirationEnabled",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3946,
                          "src": "3267:22:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 4216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3293:4:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "3267:30:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4218,
                            "name": "level",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4207,
                            "src": "3305:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                              "typeString": "struct InvitesV1.Level memory"
                            }
                          },
                          "id": 4219,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "daysToComplete",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3915,
                          "src": "3305:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3328:1:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3305:24:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "3267:62:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4223,
                          "name": "level",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4207,
                          "src": "3337:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                            "typeString": "struct InvitesV1.Level memory"
                          }
                        },
                        "id": 4224,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "daysToComplete",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3915,
                        "src": "3337:20:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3408:6:6",
                            "subdenomination": "days",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_86400_by_1",
                              "typeString": "int_const 86400"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_86400_by_1",
                              "typeString": "int_const 86400"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4228,
                                  "name": "inviter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4200,
                                  "src": "3382:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                                    "typeString": "struct InvitesV1.User memory"
                                  }
                                },
                                "id": 4229,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "levelStarted",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3898,
                                "src": "3382:20:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4225,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4194,
                                  "src": "3364:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                                    "typeString": "struct InvitesV1.User memory"
                                  }
                                },
                                "id": 4226,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "joinedAt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3904,
                                "src": "3364:13:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7990,
                              "src": "3364:17:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4230,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3364:39:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8070,
                          "src": "3364:43:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3364:51:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3337:78:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3267:148:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3242:173:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 4258,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4252,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "3430:16:6",
                            "subExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4237,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4194,
                                "src": "3431:4:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                                  "typeString": "struct InvitesV1.User memory"
                                }
                              },
                              "id": 4238,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bountyPaid",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3888,
                              "src": "3431:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 4246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4240,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4194,
                                "src": "3453:4:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                                  "typeString": "struct InvitesV1.User memory"
                                }
                              },
                              "id": 4241,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "invitedBy",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3884,
                              "src": "3453:14:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4244,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3479:1:6",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 4243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3471:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4242,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3471:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 4245,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3471:10:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "3453:28:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3430:51:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4250,
                              "name": "_invitee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4188,
                              "src": "3511:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4248,
                              "name": "identity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3938,
                              "src": "3488:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$513",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 4249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isWhitelisted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 488,
                            "src": "3488:22:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view external returns (bool)"
                            }
                          },
                          "id": 4251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3488:32:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3430:90:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4255,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4194,
                              "src": "3550:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                                "typeString": "struct InvitesV1.User memory"
                              }
                            },
                            "id": 4256,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "invitedBy",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3884,
                            "src": "3550:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4253,
                            "name": "identity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3938,
                            "src": "3527:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IIdentity_$513",
                              "typeString": "contract IIdentity"
                            }
                          },
                          "id": 4254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isWhitelisted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 488,
                          "src": "3527:22:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view external returns (bool)"
                          }
                        },
                        "id": 4257,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3527:38:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "3430:135:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 4261,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4259,
                        "name": "isLevelExpired",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4214,
                        "src": "3572:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 4260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3590:5:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "src": "3572:23:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3430:165:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 4192,
                  "id": 4263,
                  "nodeType": "Return",
                  "src": "3420:175:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6d619ef8",
            "id": 4265,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "canCollectBountyFor",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4189,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4188,
                  "mutability": "mutable",
                  "name": "_invitee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4265,
                  "src": "3062:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4187,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3062:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3061:18:6"
            },
            "returnParameters": {
              "id": 4192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4191,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4265,
                  "src": "3101:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4190,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3101:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3100:6:6"
            },
            "scope": 4767,
            "src": "3033:566:6",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4278,
              "nodeType": "Block",
              "src": "3687:39:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4273,
                        "name": "users",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3928,
                        "src": "3698:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                          "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                        }
                      },
                      "id": 4275,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4274,
                        "name": "_inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4267,
                        "src": "3704:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3698:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_storage",
                        "typeString": "struct InvitesV1.User storage ref"
                      }
                    },
                    "id": 4276,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "invitees",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3891,
                    "src": "3698:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "functionReturnParameters": 4272,
                  "id": 4277,
                  "nodeType": "Return",
                  "src": "3691:31:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "e9881a5e",
            "id": 4279,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getInvitees",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4267,
                  "mutability": "mutable",
                  "name": "_inviter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4279,
                  "src": "3623:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4266,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3623:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3622:18:6"
            },
            "returnParameters": {
              "id": 4272,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4271,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4279,
                  "src": "3668:16:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4269,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3668:7:6",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 4270,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3668:9:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3667:18:6"
            },
            "scope": 4767,
            "src": "3602:124:6",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4374,
              "nodeType": "Block",
              "src": "3821:410:6",
              "statements": [
                {
                  "assignments": [
                    4291
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4291,
                      "mutability": "mutable",
                      "name": "pending",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4374,
                      "src": "3825:24:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4289,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3825:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4290,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3825:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4296,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4292,
                        "name": "users",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3928,
                        "src": "3852:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                          "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                        }
                      },
                      "id": 4294,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4293,
                        "name": "_inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4281,
                        "src": "3858:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3852:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_storage",
                        "typeString": "struct InvitesV1.User storage ref"
                      }
                    },
                    "id": 4295,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "pending",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3894,
                    "src": "3852:23:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3825:50:6"
                },
                {
                  "assignments": [
                    4298
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4298,
                      "mutability": "mutable",
                      "name": "cur",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4374,
                      "src": "3879:11:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4297,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3879:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4300,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 4299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3893:1:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3879:15:6"
                },
                {
                  "assignments": [
                    4302
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4302,
                      "mutability": "mutable",
                      "name": "total",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4374,
                      "src": "3898:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4301,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3898:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4304,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 4303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3914:1:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3898:17:6"
                },
                {
                  "body": {
                    "id": 4327,
                    "nodeType": "Block",
                    "src": "3960:63:6",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 4321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3969:29:6",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4315,
                                "name": "users",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3928,
                                "src": "3970:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                                  "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                                }
                              },
                              "id": 4319,
                              "indexExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4316,
                                  "name": "pending",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4291,
                                  "src": "3976:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4318,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 4317,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4306,
                                  "src": "3984:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3976:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3970:17:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$3909_storage",
                                "typeString": "struct InvitesV1.User storage ref"
                              }
                            },
                            "id": 4320,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bountyPaid",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3888,
                            "src": "3970:28:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4326,
                        "nodeType": "IfStatement",
                        "src": "3965:54:6",
                        "trueBody": {
                          "id": 4325,
                          "nodeType": "Block",
                          "src": "4000:19:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4323,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4006:7:6",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 4322,
                                  "name": "total",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4302,
                                  "src": "4006:5:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4324,
                              "nodeType": "ExpressionStatement",
                              "src": "4006:7:6"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4308,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4306,
                      "src": "3935:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4309,
                        "name": "pending",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4291,
                        "src": "3939:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 4310,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3939:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3935:18:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4328,
                  "initializationExpression": {
                    "assignments": [
                      4306
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4306,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4328,
                        "src": "3924:9:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3924:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4307,
                    "initialValue": null,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3924:9:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4313,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "3955:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4312,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4306,
                        "src": "3955:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4314,
                    "nodeType": "ExpressionStatement",
                    "src": "3955:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "3919:104:6"
                },
                {
                  "assignments": [
                    4333
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4333,
                      "mutability": "mutable",
                      "name": "result",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4374,
                      "src": "4027:23:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4331,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4027:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4332,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4027:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4339,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4337,
                        "name": "total",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4302,
                        "src": "4067:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4336,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4053:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4334,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4057:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4335,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4057:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 4338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4053:20:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4027:46:6"
                },
                {
                  "body": {
                    "id": 4370,
                    "nodeType": "Block",
                    "src": "4119:91:6",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 4356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "4128:29:6",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4350,
                                "name": "users",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3928,
                                "src": "4129:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                                  "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                                }
                              },
                              "id": 4354,
                              "indexExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4351,
                                  "name": "pending",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4291,
                                  "src": "4135:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4353,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 4352,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4341,
                                  "src": "4143:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4135:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4129:17:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$3909_storage",
                                "typeString": "struct InvitesV1.User storage ref"
                              }
                            },
                            "id": 4355,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bountyPaid",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3888,
                            "src": "4129:28:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4369,
                        "nodeType": "IfStatement",
                        "src": "4124:82:6",
                        "trueBody": {
                          "id": 4368,
                          "nodeType": "Block",
                          "src": "4159:47:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4363,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4357,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4333,
                                    "src": "4165:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 4359,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4358,
                                    "name": "cur",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4298,
                                    "src": "4172:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4165:11:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4360,
                                    "name": "pending",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4291,
                                    "src": "4179:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 4362,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4361,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4341,
                                    "src": "4187:1:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4179:10:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4165:24:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 4364,
                              "nodeType": "ExpressionStatement",
                              "src": "4165:24:6"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4195:5:6",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 4365,
                                  "name": "cur",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4298,
                                  "src": "4195:3:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4367,
                              "nodeType": "ExpressionStatement",
                              "src": "4195:5:6"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4343,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4341,
                      "src": "4094:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4344,
                        "name": "pending",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4291,
                        "src": "4098:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 4345,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4098:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4094:18:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4371,
                  "initializationExpression": {
                    "assignments": [
                      4341
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4341,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4371,
                        "src": "4083:9:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4340,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4083:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4342,
                    "initialValue": null,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4083:9:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4348,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4114:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4347,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4341,
                        "src": "4114:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4349,
                    "nodeType": "ExpressionStatement",
                    "src": "4114:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "4078:132:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4372,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4333,
                    "src": "4221:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 4286,
                  "id": 4373,
                  "nodeType": "Return",
                  "src": "4214:13:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "e951a3aa",
            "id": 4375,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPendingInvitees",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4281,
                  "mutability": "mutable",
                  "name": "_inviter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4375,
                  "src": "3757:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4280,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3757:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3756:18:6"
            },
            "returnParameters": {
              "id": 4286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4285,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4375,
                  "src": "3802:16:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4283,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3802:7:6",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 4284,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3802:9:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3801:18:6"
            },
            "scope": 4767,
            "src": "3729:502:6",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4420,
              "nodeType": "Block",
              "src": "4317:204:6",
              "statements": [
                {
                  "assignments": [
                    4386
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4386,
                      "mutability": "mutable",
                      "name": "pending",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4420,
                      "src": "4321:24:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4384,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4321:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4385,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4321:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4391,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4387,
                        "name": "users",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3928,
                        "src": "4348:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                          "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                        }
                      },
                      "id": 4389,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4388,
                        "name": "_inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4377,
                        "src": "4354:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4348:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_storage",
                        "typeString": "struct InvitesV1.User storage ref"
                      }
                    },
                    "id": 4390,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "pending",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3894,
                    "src": "4348:23:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4321:50:6"
                },
                {
                  "assignments": [
                    4393
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4393,
                      "mutability": "mutable",
                      "name": "total",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4420,
                      "src": "4375:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4392,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4375:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4395,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 4394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4391:1:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4375:17:6"
                },
                {
                  "body": {
                    "id": 4416,
                    "nodeType": "Block",
                    "src": "4437:65:6",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4407,
                                "name": "pending",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4386,
                                "src": "4466:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 4409,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4408,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4397,
                                "src": "4474:1:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4466:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4406,
                            "name": "canCollectBountyFor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4265,
                            "src": "4446:19:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 4410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4446:31:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4415,
                        "nodeType": "IfStatement",
                        "src": "4442:56:6",
                        "trueBody": {
                          "id": 4414,
                          "nodeType": "Block",
                          "src": "4479:19:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4485:7:6",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 4411,
                                  "name": "total",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4393,
                                  "src": "4485:5:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4413,
                              "nodeType": "ExpressionStatement",
                              "src": "4485:7:6"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4399,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4397,
                      "src": "4412:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4400,
                        "name": "pending",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4386,
                        "src": "4416:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 4401,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4416:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4412:18:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4417,
                  "initializationExpression": {
                    "assignments": [
                      4397
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4397,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4417,
                        "src": "4401:9:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4396,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4401:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4398,
                    "initialValue": null,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4401:9:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4432:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4403,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4397,
                        "src": "4432:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4405,
                    "nodeType": "ExpressionStatement",
                    "src": "4432:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "4396:106:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4418,
                    "name": "total",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4393,
                    "src": "4512:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 4381,
                  "id": 4419,
                  "nodeType": "Return",
                  "src": "4505:12:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "41155d5e",
            "id": 4421,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPendingBounties",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4377,
                  "mutability": "mutable",
                  "name": "_inviter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4421,
                  "src": "4262:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4376,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4262:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4261:18:6"
            },
            "returnParameters": {
              "id": 4381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4380,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4421,
                  "src": "4307:7:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4379,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4307:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4306:9:6"
            },
            "scope": 4767,
            "src": "4234:287:6",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4581,
              "nodeType": "Block",
              "src": "4671:1145:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4431,
                            "name": "_invitee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4424,
                            "src": "4707:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4430,
                          "name": "canCollectBountyFor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4265,
                          "src": "4687:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 4432,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4687:29:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "75736572206e6f7420656c6c6967626c6520666f7220626f756e747920796574",
                        "id": 4433,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4721:34:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_db56c51bd2c17461ca3bc9ebc8ab0587e6152d748c7243afc10cfdd05aed84f0",
                          "typeString": "literal_string \"user not elligble for bounty yet\""
                        },
                        "value": "user not elligble for bounty yet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_db56c51bd2c17461ca3bc9ebc8ab0587e6152d748c7243afc10cfdd05aed84f0",
                          "typeString": "literal_string \"user not elligble for bounty yet\""
                        }
                      ],
                      "id": 4429,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4675:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4434,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4675:84:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4435,
                  "nodeType": "ExpressionStatement",
                  "src": "4675:84:6"
                },
                {
                  "assignments": [
                    4437
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4437,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4581,
                      "src": "4764:17:6",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                        "typeString": "struct InvitesV1.User"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4436,
                        "name": "User",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3909,
                        "src": "4764:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4441,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4438,
                      "name": "users",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3928,
                      "src": "4784:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                        "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                      }
                    },
                    "id": 4440,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4439,
                      "name": "_invitee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4424,
                      "src": "4790:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4784:15:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$3909_storage",
                      "typeString": "struct InvitesV1.User storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4764:35:6"
                },
                {
                  "assignments": [
                    4443
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4443,
                      "mutability": "mutable",
                      "name": "inviter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4581,
                      "src": "4803:20:6",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                        "typeString": "struct InvitesV1.User"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4442,
                        "name": "User",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3909,
                        "src": "4803:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4448,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4444,
                      "name": "users",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3928,
                      "src": "4826:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                        "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                      }
                    },
                    "id": 4447,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4445,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4437,
                        "src": "4832:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4446,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "invitedBy",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3884,
                      "src": "4832:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4826:21:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$3909_storage",
                      "typeString": "struct InvitesV1.User storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4803:44:6"
                },
                {
                  "assignments": [
                    4450
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4450,
                      "mutability": "mutable",
                      "name": "level",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4581,
                      "src": "4851:18:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                        "typeString": "struct InvitesV1.Level"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4449,
                        "name": "Level",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3920,
                        "src": "4851:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4455,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4451,
                      "name": "levels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3934,
                      "src": "4872:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Level_$3920_storage_$",
                        "typeString": "mapping(uint256 => struct InvitesV1.Level storage ref)"
                      }
                    },
                    "id": 4454,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4452,
                        "name": "inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4443,
                        "src": "4879:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4453,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "level",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3896,
                      "src": "4879:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4872:21:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Level_$3920_storage",
                      "typeString": "struct InvitesV1.Level storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4851:42:6"
                },
                {
                  "assignments": [
                    4457
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4457,
                      "mutability": "mutable",
                      "name": "isLevelExpired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4581,
                      "src": "4898:19:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4456,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4898:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4481,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 4467,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4461,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4458,
                            "name": "level",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4450,
                            "src": "4923:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                              "typeString": "struct InvitesV1.Level memory"
                            }
                          },
                          "id": 4459,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "daysToComplete",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3915,
                          "src": "4923:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4946:1:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4923:24:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4466,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4462,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4437,
                            "src": "4955:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                              "typeString": "struct InvitesV1.User storage pointer"
                            }
                          },
                          "id": 4463,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "joinedAt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3904,
                          "src": "4955:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4464,
                            "name": "inviter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4443,
                            "src": "4971:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                              "typeString": "struct InvitesV1.User storage pointer"
                            }
                          },
                          "id": 4465,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "levelStarted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3898,
                          "src": "4971:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4955:36:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "4923:68:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4479,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4468,
                          "name": "level",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4450,
                          "src": "5033:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                            "typeString": "struct InvitesV1.Level memory"
                          }
                        },
                        "id": 4469,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "daysToComplete",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3915,
                        "src": "5033:20:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5104:6:6",
                            "subdenomination": "days",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_86400_by_1",
                              "typeString": "int_const 86400"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_86400_by_1",
                              "typeString": "int_const 86400"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4473,
                                  "name": "inviter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4443,
                                  "src": "5078:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                    "typeString": "struct InvitesV1.User storage pointer"
                                  }
                                },
                                "id": 4474,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "levelStarted",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3898,
                                "src": "5078:20:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4470,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4437,
                                  "src": "5060:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                    "typeString": "struct InvitesV1.User storage pointer"
                                  }
                                },
                                "id": 4471,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "joinedAt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3904,
                                "src": "5060:13:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7990,
                              "src": "5060:17:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5060:39:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8070,
                          "src": "5060:43:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4478,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5060:51:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5033:78:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4923:188:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4898:213:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4486,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4482,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4437,
                        "src": "5164:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4484,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bountyPaid",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3888,
                      "src": "5164:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4485,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5182:4:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "5164:22:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4487,
                  "nodeType": "ExpressionStatement",
                  "src": "5164:22:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4488,
                        "name": "inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4443,
                        "src": "5190:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4490,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalApprovedInvites",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3900,
                      "src": "5190:28:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 4491,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5222:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5190:33:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4493,
                  "nodeType": "ExpressionStatement",
                  "src": "5190:33:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4494,
                        "name": "inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4443,
                        "src": "5227:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4496,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalEarned",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3902,
                      "src": "5227:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4497,
                        "name": "level",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4450,
                        "src": "5250:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                          "typeString": "struct InvitesV1.Level memory"
                        }
                      },
                      "id": 4498,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "bounty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3913,
                      "src": "5250:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5227:35:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4500,
                  "nodeType": "ExpressionStatement",
                  "src": "5227:35:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4501,
                        "name": "stats",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3944,
                        "src": "5266:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Stats_$3882_storage",
                          "typeString": "struct InvitesV1.Stats storage ref"
                        }
                      },
                      "id": 4503,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalApprovedInvites",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3873,
                      "src": "5266:26:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 4504,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5296:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5266:31:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4506,
                  "nodeType": "ExpressionStatement",
                  "src": "5266:31:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4507,
                        "name": "stats",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3944,
                        "src": "5301:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Stats_$3882_storage",
                          "typeString": "struct InvitesV1.Stats storage ref"
                        }
                      },
                      "id": 4509,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalBountiesPaid",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3875,
                      "src": "5301:23:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4510,
                        "name": "level",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4450,
                        "src": "5328:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                          "typeString": "struct InvitesV1.Level memory"
                        }
                      },
                      "id": 4511,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "bounty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3913,
                      "src": "5328:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5301:39:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4513,
                  "nodeType": "ExpressionStatement",
                  "src": "5301:39:6"
                },
                {
                  "assignments": [
                    4515
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4515,
                      "mutability": "mutable",
                      "name": "earnedLevel",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4581,
                      "src": "5345:16:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4514,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5345:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4517,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 4516,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5364:5:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5345:24:6"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 4527,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4521,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4518,
                            "name": "level",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4450,
                            "src": "5381:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                              "typeString": "struct InvitesV1.Level memory"
                            }
                          },
                          "id": 4519,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "toNext",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3911,
                          "src": "5381:12:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5396:1:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5381:16:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4522,
                            "name": "inviter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4443,
                            "src": "5404:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                              "typeString": "struct InvitesV1.User storage pointer"
                            }
                          },
                          "id": 4523,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalApprovedInvites",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3900,
                          "src": "5404:28:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4524,
                            "name": "level",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4450,
                            "src": "5436:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                              "typeString": "struct InvitesV1.Level memory"
                            }
                          },
                          "id": 4525,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "toNext",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3911,
                          "src": "5436:12:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5404:44:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "5381:67:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 4530,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4528,
                        "name": "isLevelExpired",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4457,
                        "src": "5455:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 4529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5473:5:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "src": "5455:23:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "5381:97:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4549,
                  "nodeType": "IfStatement",
                  "src": "5373:192:6",
                  "trueBody": {
                    "id": 4548,
                    "nodeType": "Block",
                    "src": "5483:82:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4532,
                              "name": "inviter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4443,
                              "src": "5488:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                "typeString": "struct InvitesV1.User storage pointer"
                              }
                            },
                            "id": 4534,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "level",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3896,
                            "src": "5488:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5505:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "5488:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4537,
                        "nodeType": "ExpressionStatement",
                        "src": "5488:18:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4538,
                              "name": "inviter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4443,
                              "src": "5511:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                "typeString": "struct InvitesV1.User storage pointer"
                              }
                            },
                            "id": 4540,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "levelStarted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3898,
                            "src": "5511:20:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4541,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -17,
                            "src": "5534:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5511:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4543,
                        "nodeType": "ExpressionStatement",
                        "src": "5511:26:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4544,
                            "name": "earnedLevel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4515,
                            "src": "5542:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 4545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5556:4:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "5542:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4547,
                        "nodeType": "ExpressionStatement",
                        "src": "5542:18:6"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4553,
                          "name": "user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4437,
                          "src": "5589:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                            "typeString": "struct InvitesV1.User storage pointer"
                          }
                        },
                        "id": 4554,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "invitedBy",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3884,
                        "src": "5589:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4555,
                          "name": "level",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4450,
                          "src": "5605:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                            "typeString": "struct InvitesV1.Level memory"
                          }
                        },
                        "id": 4556,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "bounty",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3913,
                        "src": "5605:12:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4550,
                        "name": "goodDollar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3940,
                        "src": "5569:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_cERC20_$309",
                          "typeString": "contract cERC20"
                        }
                      },
                      "id": 4552,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 299,
                      "src": "5569:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 4557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5569:49:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4558,
                  "nodeType": "ExpressionStatement",
                  "src": "5569:49:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4562,
                        "name": "_invitee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4424,
                        "src": "5642:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 4566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5669:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4563,
                              "name": "level",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4450,
                              "src": "5652:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                                "typeString": "struct InvitesV1.Level memory"
                              }
                            },
                            "id": 4564,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3913,
                            "src": "5652:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8070,
                          "src": "5652:16:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5652:19:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4559,
                        "name": "goodDollar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3940,
                        "src": "5622:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_cERC20_$309",
                          "typeString": "contract cERC20"
                        }
                      },
                      "id": 4561,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 299,
                      "src": "5622:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 4568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5622:50:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4569,
                  "nodeType": "ExpressionStatement",
                  "src": "5622:50:6"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4571,
                          "name": "user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4437,
                          "src": "5730:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                            "typeString": "struct InvitesV1.User storage pointer"
                          }
                        },
                        "id": 4572,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "invitedBy",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3884,
                        "src": "5730:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4573,
                        "name": "_invitee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4424,
                        "src": "5749:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4574,
                          "name": "level",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4450,
                          "src": "5762:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                            "typeString": "struct InvitesV1.Level memory"
                          }
                        },
                        "id": 4575,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "bounty",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3913,
                        "src": "5762:12:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4576,
                          "name": "inviter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4443,
                          "src": "5779:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                            "typeString": "struct InvitesV1.User storage pointer"
                          }
                        },
                        "id": 4577,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "level",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3896,
                        "src": "5779:13:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4578,
                        "name": "earnedLevel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4515,
                        "src": "5797:11:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4570,
                      "name": "InviterBounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3964,
                      "src": "5712:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bool)"
                      }
                    },
                    "id": 4579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5712:100:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4580,
                  "nodeType": "EmitStatement",
                  "src": "5707:105:6"
                }
              ]
            },
            "documentation": {
              "id": 4422,
              "nodeType": "StructuredDocumentation",
              "src": "4524:92:6",
              "text": " @dev  pay bounty for the inviter of _invitee\n invitee need to be whitelisted"
            },
            "functionSelector": "b6567cd5",
            "id": 4582,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4427,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4426,
                  "name": "isActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4001,
                  "src": "4662:8:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4662:8:6"
              }
            ],
            "name": "bountyFor",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4424,
                  "mutability": "mutable",
                  "name": "_invitee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4582,
                  "src": "4637:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4423,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4637:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4636:18:6"
            },
            "returnParameters": {
              "id": 4428,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4671:0:6"
            },
            "scope": 4767,
            "src": "4618:1198:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4667,
              "nodeType": "Block",
              "src": "5954:616:6",
              "statements": [
                {
                  "assignments": [
                    4589
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4589,
                      "mutability": "mutable",
                      "name": "inviter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4667,
                      "src": "5958:20:6",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                        "typeString": "struct InvitesV1.User"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4588,
                        "name": "User",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3909,
                        "src": "5958:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4594,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4590,
                      "name": "users",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3928,
                      "src": "5981:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                        "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                      }
                    },
                    "id": 4593,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4591,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "5987:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4592,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5987:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5981:17:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$3909_storage",
                      "typeString": "struct InvitesV1.User storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5958:40:6"
                },
                {
                  "body": {
                    "id": 4665,
                    "nodeType": "Block",
                    "src": "6056:511:6",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4608,
                                  "name": "inviter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4589,
                                  "src": "6085:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                    "typeString": "struct InvitesV1.User storage pointer"
                                  }
                                },
                                "id": 4609,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pending",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3894,
                                "src": "6085:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4611,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4610,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4596,
                                "src": "6101:1:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6085:18:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4607,
                            "name": "canCollectBountyFor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4265,
                            "src": "6065:19:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 4612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6065:39:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4621,
                        "nodeType": "IfStatement",
                        "src": "6061:86:6",
                        "trueBody": {
                          "id": 4620,
                          "nodeType": "Block",
                          "src": "6106:41:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4614,
                                        "name": "inviter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4589,
                                        "src": "6122:7:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                          "typeString": "struct InvitesV1.User storage pointer"
                                        }
                                      },
                                      "id": 4615,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "pending",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3894,
                                      "src": "6122:15:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                        "typeString": "address[] storage ref"
                                      }
                                    },
                                    "id": 4617,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 4616,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4596,
                                      "src": "6138:1:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6122:18:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4613,
                                  "name": "bountyFor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4582,
                                  "src": "6112:9:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 4618,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6112:29:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4619,
                              "nodeType": "ExpressionStatement",
                              "src": "6112:29:6"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4622,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3928,
                              "src": "6155:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                                "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                              }
                            },
                            "id": 4627,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4623,
                                  "name": "inviter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4589,
                                  "src": "6161:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                    "typeString": "struct InvitesV1.User storage pointer"
                                  }
                                },
                                "id": 4624,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pending",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3894,
                                "src": "6161:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4626,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4625,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4596,
                                "src": "6177:1:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6161:18:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6155:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$3909_storage",
                              "typeString": "struct InvitesV1.User storage ref"
                            }
                          },
                          "id": 4628,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "bountyPaid",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3888,
                          "src": "6155:36:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4664,
                        "nodeType": "IfStatement",
                        "src": "6151:412:6",
                        "trueBody": {
                          "id": 4663,
                          "nodeType": "Block",
                          "src": "6193:370:6",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4633,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4629,
                                        "name": "inviter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4589,
                                        "src": "6271:7:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                          "typeString": "struct InvitesV1.User storage pointer"
                                        }
                                      },
                                      "id": 4630,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "pending",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3894,
                                      "src": "6271:15:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                        "typeString": "address[] storage ref"
                                      }
                                    },
                                    "id": 4631,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6271:22:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 4632,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6296:1:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6271:26:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 4634,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4596,
                                  "src": "6300:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6271:30:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 4655,
                              "nodeType": "IfStatement",
                              "src": "6267:226:6",
                              "trueBody": {
                                "id": 4654,
                                "nodeType": "Block",
                                "src": "6303:190:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4649,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4636,
                                            "name": "inviter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4589,
                                            "src": "6310:7:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                              "typeString": "struct InvitesV1.User storage pointer"
                                            }
                                          },
                                          "id": 4639,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "pending",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3894,
                                          "src": "6310:15:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 4640,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 4638,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4596,
                                          "src": "6326:1:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "6310:18:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4641,
                                            "name": "inviter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4589,
                                            "src": "6331:7:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                              "typeString": "struct InvitesV1.User storage pointer"
                                            }
                                          },
                                          "id": 4642,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "pending",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3894,
                                          "src": "6331:15:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 4648,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4647,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4643,
                                                "name": "inviter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4589,
                                                "src": "6354:7:6",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                                  "typeString": "struct InvitesV1.User storage pointer"
                                                }
                                              },
                                              "id": 4644,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "pending",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3894,
                                              "src": "6354:15:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                "typeString": "address[] storage ref"
                                              }
                                            },
                                            "id": 4645,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "6354:22:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 4646,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6379:1:6",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "6354:26:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6331:56:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "6310:77:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 4650,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6310:77:6"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4652,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "--",
                                      "prefix": false,
                                      "src": "6483:3:6",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 4651,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4596,
                                        "src": "6483:1:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4653,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6483:3:6"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4656,
                                      "name": "inviter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4589,
                                      "src": "6536:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                        "typeString": "struct InvitesV1.User storage pointer"
                                      }
                                    },
                                    "id": 4659,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pending",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3894,
                                    "src": "6536:15:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 4660,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pop",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6536:19:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 4661,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6536:21:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4662,
                              "nodeType": "ExpressionStatement",
                              "src": "6536:21:6"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4599,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4596,
                      "src": "6023:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4600,
                          "name": "inviter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4589,
                          "src": "6027:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                            "typeString": "struct InvitesV1.User storage pointer"
                          }
                        },
                        "id": 4601,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pending",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3894,
                        "src": "6027:15:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4602,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6027:22:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6023:26:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4666,
                  "initializationExpression": {
                    "assignments": [
                      4596
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4596,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4666,
                        "src": "6008:9:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4595,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6008:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4598,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4597,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6020:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6008:13:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4605,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6051:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4604,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4596,
                        "src": "6051:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4606,
                    "nodeType": "ExpressionStatement",
                    "src": "6051:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "6003:564:6"
                }
              ]
            },
            "documentation": {
              "id": 4583,
              "nodeType": "StructuredDocumentation",
              "src": "5819:90:6",
              "text": "@dev collect bounties for invitees by msg.sender that are now whitelisted"
            },
            "functionSelector": "af6346b0",
            "id": 4668,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4586,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4585,
                  "name": "isActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4001,
                  "src": "5945:8:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5945:8:6"
              }
            ],
            "name": "collectBounties",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4584,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5935:2:6"
            },
            "returnParameters": {
              "id": 4587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5954:0:6"
            },
            "scope": 4767,
            "src": "5911:659:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4705,
              "nodeType": "Block",
              "src": "6696:128:6",
              "statements": [
                {
                  "assignments": [
                    4682
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4682,
                      "mutability": "mutable",
                      "name": "lvl",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4705,
                      "src": "6700:17:6",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                        "typeString": "struct InvitesV1.Level"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4681,
                        "name": "Level",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3920,
                        "src": "6700:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4686,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4683,
                      "name": "levels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3934,
                      "src": "6720:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Level_$3920_storage_$",
                        "typeString": "mapping(uint256 => struct InvitesV1.Level storage ref)"
                      }
                    },
                    "id": 4685,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4684,
                      "name": "_lvl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4670,
                      "src": "6727:4:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6720:12:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Level_$3920_storage",
                      "typeString": "struct InvitesV1.Level storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6700:32:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4687,
                        "name": "lvl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4682,
                        "src": "6736:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level storage pointer"
                        }
                      },
                      "id": 4689,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "toNext",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3911,
                      "src": "6736:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4690,
                      "name": "_toNext",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4672,
                      "src": "6749:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6736:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4692,
                  "nodeType": "ExpressionStatement",
                  "src": "6736:20:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4697,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4693,
                        "name": "lvl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4682,
                        "src": "6760:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level storage pointer"
                        }
                      },
                      "id": 4695,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "daysToComplete",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3915,
                      "src": "6760:18:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4696,
                      "name": "_daysToComplete",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4676,
                      "src": "6781:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6760:36:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4698,
                  "nodeType": "ExpressionStatement",
                  "src": "6760:36:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4699,
                        "name": "lvl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4682,
                        "src": "6800:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level storage pointer"
                        }
                      },
                      "id": 4701,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bounty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3913,
                      "src": "6800:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4702,
                      "name": "_bounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4674,
                      "src": "6813:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6800:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4704,
                  "nodeType": "ExpressionStatement",
                  "src": "6800:20:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b9fb2d18",
            "id": 4706,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4679,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4678,
                  "name": "ownerOrAvatar",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3981,
                  "src": "6682:13:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6682:13:6"
              }
            ],
            "name": "setLevel",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4670,
                  "mutability": "mutable",
                  "name": "_lvl",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4706,
                  "src": "6594:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4669,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6594:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4672,
                  "mutability": "mutable",
                  "name": "_toNext",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4706,
                  "src": "6610:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4671,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6610:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4674,
                  "mutability": "mutable",
                  "name": "_bounty",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4706,
                  "src": "6629:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4673,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6629:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4676,
                  "mutability": "mutable",
                  "name": "_daysToComplete",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4706,
                  "src": "6648:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4675,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6648:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6590:84:6"
            },
            "returnParameters": {
              "id": 4680,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6696:0:6"
            },
            "scope": 4767,
            "src": "6573:251:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4717,
              "nodeType": "Block",
              "src": "6881:24:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4715,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4713,
                      "name": "active",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3942,
                      "src": "6885:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4714,
                      "name": "_active",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4708,
                      "src": "6894:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6885:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4716,
                  "nodeType": "ExpressionStatement",
                  "src": "6885:16:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "acec338a",
            "id": 4718,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4711,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4710,
                  "name": "ownerOrAvatar",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3981,
                  "src": "6867:13:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6867:13:6"
              }
            ],
            "name": "setActive",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4708,
                  "mutability": "mutable",
                  "name": "_active",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4718,
                  "src": "6846:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4707,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6846:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6845:14:6"
            },
            "returnParameters": {
              "id": 4712,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6881:0:6"
            },
            "scope": 4767,
            "src": "6827:78:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4756,
              "nodeType": "Block",
              "src": "6953:165:6",
              "statements": [
                {
                  "assignments": [
                    4726
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4726,
                      "mutability": "mutable",
                      "name": "gdBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4756,
                      "src": "6957:17:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4725,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6957:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4734,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4731,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "7006:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_InvitesV1_$4767",
                              "typeString": "contract InvitesV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_InvitesV1_$4767",
                              "typeString": "contract InvitesV1"
                            }
                          ],
                          "id": 4730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6998:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 4729,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6998:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 4732,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6998:13:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4727,
                        "name": "goodDollar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3940,
                        "src": "6977:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_cERC20_$309",
                          "typeString": "contract cERC20"
                        }
                      },
                      "id": 4728,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 290,
                      "src": "6977:20:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 4733,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6977:35:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6957:55:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4738,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3930,
                        "src": "7036:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4739,
                        "name": "gdBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4726,
                        "src": "7044:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4735,
                        "name": "goodDollar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3940,
                        "src": "7016:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_cERC20_$309",
                          "typeString": "contract cERC20"
                        }
                      },
                      "id": 4737,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 299,
                      "src": "7016:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 4740,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7016:38:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4741,
                  "nodeType": "ExpressionStatement",
                  "src": "7016:38:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4747,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "7082:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_InvitesV1_$4767",
                                "typeString": "contract InvitesV1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_InvitesV1_$4767",
                                "typeString": "contract InvitesV1"
                              }
                            ],
                            "id": 4746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7074:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4745,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7074:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 4748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7074:13:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "balance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7074:21:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4742,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3930,
                        "src": "7058:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "id": 4744,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7058:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7058:38:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4751,
                  "nodeType": "ExpressionStatement",
                  "src": "7058:38:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4752,
                      "name": "active",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3942,
                      "src": "7100:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 4753,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7109:5:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "7100:14:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4755,
                  "nodeType": "ExpressionStatement",
                  "src": "7100:14:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "efbe1c1c",
            "id": 4757,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4721,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4720,
                  "name": "ownerOrAvatar",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3981,
                  "src": "6930:13:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6930:13:6"
              },
              {
                "arguments": null,
                "id": 4723,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4722,
                  "name": "isActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4001,
                  "src": "6944:8:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6944:8:6"
              }
            ],
            "name": "end",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4719,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6920:2:6"
            },
            "returnParameters": {
              "id": 4724,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6953:0:6"
            },
            "scope": 4767,
            "src": "6908:210:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4765,
              "nodeType": "Block",
              "src": "7236:22:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "312e322e30",
                    "id": 4763,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7247:7:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_e374587661e69268352d25204d81b23ce801573f4b09f3545e69536dc085a37a",
                      "typeString": "literal_string \"1.2.0\""
                    },
                    "value": "1.2.0"
                  },
                  "functionReturnParameters": 4762,
                  "id": 4764,
                  "nodeType": "Return",
                  "src": "7240:14:6"
                }
              ]
            },
            "documentation": {
              "id": 4758,
              "nodeType": "StructuredDocumentation",
              "src": "7121:58:6",
              "text": " @dev\n 1.2.0 - final changes before release"
            },
            "functionSelector": "54fd4d50",
            "id": 4766,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "version",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4759,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7197:2:6"
            },
            "returnParameters": {
              "id": 4762,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4761,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4766,
                  "src": "7221:13:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4760,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7221:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7220:15:6"
            },
            "scope": 4767,
            "src": "7181:77:6",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4768,
        "src": "383:6877:6"
      }
    ],
    "src": "33:7228:6"
  },
  "legacyAST": {
    "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/invite/InvitesV1.sol",
    "exportedSymbols": {
      "InvitesV1": [
        4767
      ]
    },
    "id": 4768,
    "license": "MIT",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 3861,
        "literals": [
          "solidity",
          ">=",
          "0.6",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "33:24:6"
      },
      {
        "id": 3862,
        "literals": [
          "experimental",
          "ABIEncoderV2"
        ],
        "nodeType": "PragmaDirective",
        "src": "59:33:6"
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/proxy/Initializable.sol",
        "file": "@openzeppelin/contracts-upgradeable/proxy/Initializable.sol",
        "id": 3863,
        "nodeType": "ImportDirective",
        "scope": 4768,
        "sourceUnit": 8212,
        "src": "94:69:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol",
        "file": "@openzeppelin/contracts-upgradeable/math/SafeMathUpgradeable.sol",
        "id": 3864,
        "nodeType": "ImportDirective",
        "scope": 4768,
        "sourceUnit": 8141,
        "src": "164:74:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "/Users/hadar/workspace/GoodDollar/GoodBootstrap/packages/contracts/upgradables/contracts/Interfaces.sol",
        "file": "../Interfaces.sol",
        "id": 3865,
        "nodeType": "ImportDirective",
        "scope": 4768,
        "sourceUnit": 552,
        "src": "239:27:6",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 3867,
              "name": "Initializable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8211,
              "src": "405:13:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_Initializable_$8211",
                "typeString": "contract Initializable"
              }
            },
            "id": 3868,
            "nodeType": "InheritanceSpecifier",
            "src": "405:13:6"
          }
        ],
        "contractDependencies": [
          8211
        ],
        "contractKind": "contract",
        "documentation": {
          "id": 3866,
          "nodeType": "StructuredDocumentation",
          "src": "268:114:6",
          "text": " @title InvitesV1 contract that handles invites with pre allocated bounty pool\n 1.1 adds invitee bonus"
        },
        "fullyImplemented": true,
        "id": 4767,
        "linearizedBaseContracts": [
          4767,
          8211
        ],
        "name": "InvitesV1",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 3871,
            "libraryName": {
              "contractScope": null,
              "id": 3869,
              "name": "SafeMathUpgradeable",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 8140,
              "src": "428:19:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMathUpgradeable_$8140",
                "typeString": "library SafeMathUpgradeable"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "422:38:6",
            "typeName": {
              "id": 3870,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "452:7:6",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "canonicalName": "InvitesV1.Stats",
            "id": 3882,
            "members": [
              {
                "constant": false,
                "id": 3873,
                "mutability": "mutable",
                "name": "totalApprovedInvites",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3882,
                "src": "480:28:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3872,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "480:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3875,
                "mutability": "mutable",
                "name": "totalBountiesPaid",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3882,
                "src": "512:25:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3874,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "512:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3877,
                "mutability": "mutable",
                "name": "totalInvited",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3882,
                "src": "541:20:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3876,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "541:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3881,
                "mutability": "mutable",
                "name": "__reserevedSpace",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3882,
                "src": "565:27:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                  "typeString": "uint256[5]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3878,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "565:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3880,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "35",
                    "id": 3879,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "573:1:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_5_by_1",
                      "typeString": "int_const 5"
                    },
                    "value": "5"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "565:10:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                    "typeString": "uint256[5]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Stats",
            "nodeType": "StructDefinition",
            "scope": 4767,
            "src": "463:133:6",
            "visibility": "public"
          },
          {
            "canonicalName": "InvitesV1.User",
            "id": 3909,
            "members": [
              {
                "constant": false,
                "id": 3884,
                "mutability": "mutable",
                "name": "invitedBy",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "615:17:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 3883,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "615:7:6",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3886,
                "mutability": "mutable",
                "name": "inviteCode",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "636:18:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 3885,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "636:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3888,
                "mutability": "mutable",
                "name": "bountyPaid",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "658:15:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 3887,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "658:4:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3891,
                "mutability": "mutable",
                "name": "invitees",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "677:18:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3889,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "677:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3890,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "677:9:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                    "typeString": "address[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3894,
                "mutability": "mutable",
                "name": "pending",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "699:17:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                  "typeString": "address[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3892,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "699:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 3893,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "699:9:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                    "typeString": "address[]"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3896,
                "mutability": "mutable",
                "name": "level",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "720:13:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3895,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "720:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3898,
                "mutability": "mutable",
                "name": "levelStarted",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "737:20:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3897,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "737:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3900,
                "mutability": "mutable",
                "name": "totalApprovedInvites",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "761:28:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3899,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "761:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3902,
                "mutability": "mutable",
                "name": "totalEarned",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "793:19:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3901,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "793:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3904,
                "mutability": "mutable",
                "name": "joinedAt",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "816:16:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3903,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "816:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3908,
                "mutability": "mutable",
                "name": "__reserevedSpace",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3909,
                "src": "836:27:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                  "typeString": "uint256[5]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3905,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "836:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3907,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "35",
                    "id": 3906,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "844:1:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_5_by_1",
                      "typeString": "int_const 5"
                    },
                    "value": "5"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "836:10:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                    "typeString": "uint256[5]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "User",
            "nodeType": "StructDefinition",
            "scope": 4767,
            "src": "599:268:6",
            "visibility": "public"
          },
          {
            "canonicalName": "InvitesV1.Level",
            "id": 3920,
            "members": [
              {
                "constant": false,
                "id": 3911,
                "mutability": "mutable",
                "name": "toNext",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3920,
                "src": "887:14:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3910,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "887:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3913,
                "mutability": "mutable",
                "name": "bounty",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3920,
                "src": "905:14:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3912,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "905:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3915,
                "mutability": "mutable",
                "name": "daysToComplete",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3920,
                "src": "951:22:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 3914,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "951:7:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 3919,
                "mutability": "mutable",
                "name": "__reserevedSpace",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 3920,
                "src": "977:27:6",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                  "typeString": "uint256[5]"
                },
                "typeName": {
                  "baseType": {
                    "id": 3916,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "977:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 3918,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "35",
                    "id": 3917,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "985:1:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_5_by_1",
                      "typeString": "int_const 5"
                    },
                    "value": "5"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "977:10:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_uint256_$5_storage_ptr",
                    "typeString": "uint256[5]"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Level",
            "nodeType": "StructDefinition",
            "scope": 4767,
            "src": "870:138:6",
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "ba6f5680",
            "id": 3924,
            "mutability": "mutable",
            "name": "codeToUser",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1011:45:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 3923,
              "keyType": {
                "id": 3921,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1019:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1011:27:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 3922,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1030:7:6",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "a87430ba",
            "id": 3928,
            "mutability": "mutable",
            "name": "users",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1059:37:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
              "typeString": "mapping(address => struct InvitesV1.User)"
            },
            "typeName": {
              "id": 3927,
              "keyType": {
                "id": 3925,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1067:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              },
              "nodeType": "Mapping",
              "src": "1059:24:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                "typeString": "mapping(address => struct InvitesV1.User)"
              },
              "valueType": {
                "contractScope": null,
                "id": 3926,
                "name": "User",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 3909,
                "src": "1078:4:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                  "typeString": "struct InvitesV1.User"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "5aef7de6",
            "id": 3930,
            "mutability": "mutable",
            "name": "avatar",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1099:29:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address_payable",
              "typeString": "address payable"
            },
            "typeName": {
              "id": 3929,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1099:15:6",
              "stateMutability": "payable",
              "typeDescriptions": {
                "typeIdentifier": "t_address_payable",
                "typeString": "address payable"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "b2596a67",
            "id": 3934,
            "mutability": "mutable",
            "name": "levels",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1132:39:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Level_$3920_storage_$",
              "typeString": "mapping(uint256 => struct InvitesV1.Level)"
            },
            "typeName": {
              "id": 3933,
              "keyType": {
                "id": 3931,
                "name": "uint256",
                "nodeType": "ElementaryTypeName",
                "src": "1140:7:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                }
              },
              "nodeType": "Mapping",
              "src": "1132:25:6",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Level_$3920_storage_$",
                "typeString": "mapping(uint256 => struct InvitesV1.Level)"
              },
              "valueType": {
                "contractScope": null,
                "id": 3932,
                "name": "Level",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 3920,
                "src": "1151:5:6",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                  "typeString": "struct InvitesV1.Level"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "8da5cb5b",
            "id": 3936,
            "mutability": "mutable",
            "name": "owner",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1175:20:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_address",
              "typeString": "address"
            },
            "typeName": {
              "id": 3935,
              "name": "address",
              "nodeType": "ElementaryTypeName",
              "src": "1175:7:6",
              "stateMutability": "nonpayable",
              "typeDescriptions": {
                "typeIdentifier": "t_address",
                "typeString": "address"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "2c159a1a",
            "id": 3938,
            "mutability": "mutable",
            "name": "identity",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1198:25:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_IIdentity_$513",
              "typeString": "contract IIdentity"
            },
            "typeName": {
              "contractScope": null,
              "id": 3937,
              "name": "IIdentity",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 513,
              "src": "1198:9:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IIdentity_$513",
                "typeString": "contract IIdentity"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "119e5bf3",
            "id": 3940,
            "mutability": "mutable",
            "name": "goodDollar",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1226:24:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_contract$_cERC20_$309",
              "typeString": "contract cERC20"
            },
            "typeName": {
              "contractScope": null,
              "id": 3939,
              "name": "cERC20",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 309,
              "src": "1226:6:6",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_cERC20_$309",
                "typeString": "contract cERC20"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "02fb0c5e",
            "id": 3942,
            "mutability": "mutable",
            "name": "active",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1253:18:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 3941,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1253:4:6",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "d80528ae",
            "id": 3944,
            "mutability": "mutable",
            "name": "stats",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1274:18:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_struct$_Stats_$3882_storage",
              "typeString": "struct InvitesV1.Stats"
            },
            "typeName": {
              "contractScope": null,
              "id": 3943,
              "name": "Stats",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 3882,
              "src": "1274:5:6",
              "typeDescriptions": {
                "typeIdentifier": "t_struct$_Stats_$3882_storage_ptr",
                "typeString": "struct InvitesV1.Stats"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "functionSelector": "a1df6fd3",
            "id": 3946,
            "mutability": "mutable",
            "name": "levelExpirationEnabled",
            "nodeType": "VariableDeclaration",
            "overrides": null,
            "scope": 4767,
            "src": "1296:34:6",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_bool",
              "typeString": "bool"
            },
            "typeName": {
              "id": 3945,
              "name": "bool",
              "nodeType": "ElementaryTypeName",
              "src": "1296:4:6",
              "typeDescriptions": {
                "typeIdentifier": "t_bool",
                "typeString": "bool"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3952,
            "name": "InviteeJoined",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3951,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3948,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "inviter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3952,
                  "src": "1354:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3947,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1354:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3950,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "invitee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3952,
                  "src": "1379:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3949,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1379:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1353:50:6"
            },
            "src": "1334:70:6"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 3964,
            "name": "InviterBounty",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 3963,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 3954,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "inviter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3964,
                  "src": "1429:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3953,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1429:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3956,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "invitee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3964,
                  "src": "1456:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 3955,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1456:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3958,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "bountyPaid",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3964,
                  "src": "1483:18:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3957,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1483:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3960,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "inviterLevel",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3964,
                  "src": "1505:20:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 3959,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1505:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 3962,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "earnedLevel",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 3964,
                  "src": "1529:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 3961,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1529:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1425:123:6"
            },
            "src": "1406:143:6"
          },
          {
            "body": {
              "id": 3980,
              "nodeType": "Block",
              "src": "1577:123:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 3975,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 3970,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3967,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1593:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3968,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1593:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3969,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3936,
                            "src": "1607:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "1593:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          },
                          "id": 3974,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3971,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1616:3:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3972,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1616:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 3973,
                            "name": "avatar",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3930,
                            "src": "1630:6:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1616:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1593:43:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c79206f776e6572206f72206176617461722063616e20706572666f726d207468697320616374696f6e",
                        "id": 3976,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1641:46:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_c25984da557f35037d2891f594d5804eb4670ecdff16d66f4e6af613e4465384",
                          "typeString": "literal_string \"Only owner or avatar can perform this action\""
                        },
                        "value": "Only owner or avatar can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_c25984da557f35037d2891f594d5804eb4670ecdff16d66f4e6af613e4465384",
                          "typeString": "literal_string \"Only owner or avatar can perform this action\""
                        }
                      ],
                      "id": 3966,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1581:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1581:110:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3978,
                  "nodeType": "ExpressionStatement",
                  "src": "1581:110:6"
                },
                {
                  "id": 3979,
                  "nodeType": "PlaceholderStatement",
                  "src": "1695:1:6"
                }
              ]
            },
            "documentation": null,
            "id": 3981,
            "name": "ownerOrAvatar",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 3965,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1574:2:6"
            },
            "src": "1552:148:6",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 3992,
              "nodeType": "Block",
              "src": "1725:95:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        "id": 3987,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3984,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "1741:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3985,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1741:10:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 3986,
                          "name": "avatar",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3930,
                          "src": "1755:6:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "1741:20:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "4f6e6c792044414f206176617461722063616e20706572666f726d207468697320616374696f6e",
                        "id": 3988,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1766:41:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_7bce5418ccf131c86ef10cf50737f7535137691c561f6dc76412136411e6f7fb",
                          "typeString": "literal_string \"Only DAO avatar can perform this action\""
                        },
                        "value": "Only DAO avatar can perform this action"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_7bce5418ccf131c86ef10cf50737f7535137691c561f6dc76412136411e6f7fb",
                          "typeString": "literal_string \"Only DAO avatar can perform this action\""
                        }
                      ],
                      "id": 3983,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1729:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 3989,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1729:82:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3990,
                  "nodeType": "ExpressionStatement",
                  "src": "1729:82:6"
                },
                {
                  "id": 3991,
                  "nodeType": "PlaceholderStatement",
                  "src": "1815:1:6"
                }
              ]
            },
            "documentation": null,
            "id": 3993,
            "name": "onlyAvatar",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 3982,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1722:2:6"
            },
            "src": "1703:117:6",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4000,
              "nodeType": "Block",
              "src": "1843:28:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3996,
                        "name": "active",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3942,
                        "src": "1855:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 3995,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "1847:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 3997,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1847:15:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 3998,
                  "nodeType": "ExpressionStatement",
                  "src": "1847:15:6"
                },
                {
                  "id": 3999,
                  "nodeType": "PlaceholderStatement",
                  "src": "1866:1:6"
                }
              ]
            },
            "documentation": null,
            "id": 4001,
            "name": "isActive",
            "nodeType": "ModifierDefinition",
            "overrides": null,
            "parameters": {
              "id": 3994,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1840:2:6"
            },
            "src": "1823:48:6",
            "virtual": false,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 4055,
              "nodeType": "Block",
              "src": "2003:222:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4017,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4014,
                      "name": "owner",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3936,
                      "src": "2007:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4015,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "2015:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4016,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2015:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2007:18:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4018,
                  "nodeType": "ExpressionStatement",
                  "src": "2007:18:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4023,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4019,
                      "name": "identity",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3938,
                      "src": "2029:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IIdentity_$513",
                        "typeString": "contract IIdentity"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4021,
                          "name": "_identity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4005,
                          "src": "2050:9:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 4020,
                        "name": "IIdentity",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 513,
                        "src": "2040:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_IIdentity_$513_$",
                          "typeString": "type(contract IIdentity)"
                        }
                      },
                      "id": 4022,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2040:20:6",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_IIdentity_$513",
                        "typeString": "contract IIdentity"
                      }
                    },
                    "src": "2029:31:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IIdentity_$513",
                      "typeString": "contract IIdentity"
                    }
                  },
                  "id": 4024,
                  "nodeType": "ExpressionStatement",
                  "src": "2029:31:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4027,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4025,
                      "name": "active",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3942,
                      "src": "2064:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4026,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2073:4:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2064:13:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4028,
                  "nodeType": "ExpressionStatement",
                  "src": "2064:13:6"
                },
                {
                  "assignments": [
                    4030
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4030,
                      "mutability": "mutable",
                      "name": "lvl",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4055,
                      "src": "2081:17:6",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                        "typeString": "struct InvitesV1.Level"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4029,
                        "name": "Level",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3920,
                        "src": "2081:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4034,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4031,
                      "name": "levels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3934,
                      "src": "2101:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Level_$3920_storage_$",
                        "typeString": "mapping(uint256 => struct InvitesV1.Level storage ref)"
                      }
                    },
                    "id": 4033,
                    "indexExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4032,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2108:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2101:9:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Level_$3920_storage",
                      "typeString": "struct InvitesV1.Level storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2081:29:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4039,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4035,
                        "name": "lvl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4030,
                        "src": "2114:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level storage pointer"
                        }
                      },
                      "id": 4037,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bounty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3913,
                      "src": "2114:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4038,
                      "name": "level0Bounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4009,
                      "src": "2127:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2114:25:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4040,
                  "nodeType": "ExpressionStatement",
                  "src": "2114:25:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4045,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4041,
                      "name": "goodDollar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3940,
                      "src": "2143:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_cERC20_$309",
                        "typeString": "contract cERC20"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 4043,
                          "name": "_gd",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4007,
                          "src": "2163:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        ],
                        "id": 4042,
                        "name": "cERC20",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 309,
                        "src": "2156:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_contract$_cERC20_$309_$",
                          "typeString": "type(contract cERC20)"
                        }
                      },
                      "id": 4044,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2156:11:6",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_contract$_cERC20_$309",
                        "typeString": "contract cERC20"
                      }
                    },
                    "src": "2143:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_cERC20_$309",
                      "typeString": "contract cERC20"
                    }
                  },
                  "id": 4046,
                  "nodeType": "ExpressionStatement",
                  "src": "2143:24:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4049,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4047,
                      "name": "avatar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3930,
                      "src": "2171:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4048,
                      "name": "_avatar",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4003,
                      "src": "2180:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2171:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "id": 4050,
                  "nodeType": "ExpressionStatement",
                  "src": "2171:16:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4053,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4051,
                      "name": "levelExpirationEnabled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3946,
                      "src": "2191:22:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 4052,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2216:5:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "2191:30:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4054,
                  "nodeType": "ExpressionStatement",
                  "src": "2191:30:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "cf756fdf",
            "id": 4056,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4012,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4011,
                  "name": "initializer",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 8188,
                  "src": "1991:11:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "1991:11:6"
              }
            ],
            "name": "initialize",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4010,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4003,
                  "mutability": "mutable",
                  "name": "_avatar",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4056,
                  "src": "1897:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address_payable",
                    "typeString": "address payable"
                  },
                  "typeName": {
                    "id": 4002,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1897:15:6",
                    "stateMutability": "payable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address_payable",
                      "typeString": "address payable"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4005,
                  "mutability": "mutable",
                  "name": "_identity",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4056,
                  "src": "1924:17:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4004,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1924:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4007,
                  "mutability": "mutable",
                  "name": "_gd",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4056,
                  "src": "1945:11:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4006,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1945:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4009,
                  "mutability": "mutable",
                  "name": "level0Bounty",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4056,
                  "src": "1960:20:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4008,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1960:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1893:90:6"
            },
            "returnParameters": {
              "id": 4013,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2003:0:6"
            },
            "scope": 4767,
            "src": "1874:351:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4067,
              "nodeType": "Block",
              "src": "2301:43:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4065,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4063,
                      "name": "levelExpirationEnabled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3946,
                      "src": "2305:22:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4064,
                      "name": "_isEnabled",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4058,
                      "src": "2330:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "2305:35:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4066,
                  "nodeType": "ExpressionStatement",
                  "src": "2305:35:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "21132aad",
            "id": 4068,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4061,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4060,
                  "name": "ownerOrAvatar",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3981,
                  "src": "2287:13:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2287:13:6"
              }
            ],
            "name": "setLevelExpirationEnabled",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4059,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4058,
                  "mutability": "mutable",
                  "name": "_isEnabled",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4068,
                  "src": "2263:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4057,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "2263:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2262:17:6"
            },
            "returnParameters": {
              "id": 4062,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2301:0:6"
            },
            "scope": 4767,
            "src": "2228:116:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4185,
              "nodeType": "Block",
              "src": "2416:614:6",
              "statements": [
                {
                  "assignments": [
                    4078
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4078,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4185,
                      "src": "2420:17:6",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                        "typeString": "struct InvitesV1.User"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4077,
                        "name": "User",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3909,
                        "src": "2420:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4083,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4079,
                      "name": "users",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3928,
                      "src": "2440:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                        "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                      }
                    },
                    "id": 4082,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4080,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "2446:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4081,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2446:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2440:17:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$3909_storage",
                      "typeString": "struct InvitesV1.User storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2420:37:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        "id": 4088,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4085,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4078,
                            "src": "2469:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                              "typeString": "struct InvitesV1.User storage pointer"
                            }
                          },
                          "id": 4086,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "inviteCode",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3886,
                          "src": "2469:15:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "307830",
                          "id": 4087,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2488:3:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0x0"
                        },
                        "src": "2469:22:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "7573657220616c7265616479206a6f696e6564",
                        "id": 4089,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2493:21:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_8d326376733505fb4fe83bb88b4895d893db8de970ead9841c506347e488829d",
                          "typeString": "literal_string \"user already joined\""
                        },
                        "value": "user already joined"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_8d326376733505fb4fe83bb88b4895d893db8de970ead9841c506347e488829d",
                          "typeString": "literal_string \"user already joined\""
                        }
                      ],
                      "id": 4084,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2461:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4090,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2461:54:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4091,
                  "nodeType": "ExpressionStatement",
                  "src": "2461:54:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 4100,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4093,
                            "name": "codeToUser",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3924,
                            "src": "2531:10:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                              "typeString": "mapping(bytes32 => address)"
                            }
                          },
                          "id": 4095,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4094,
                            "name": "_myCode",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4070,
                            "src": "2542:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2531:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4098,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2562:1:6",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 4097,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2554:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4096,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2554:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 4099,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2554:10:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "2531:33:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "696e7669746520636f646520616c726561647920696e20757365",
                        "id": 4101,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2569:28:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_cf65944e469ad748eaf1f1c08d09ea64ce8eea0850d47a86975e1c175962a472",
                          "typeString": "literal_string \"invite code already in use\""
                        },
                        "value": "invite code already in use"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_cf65944e469ad748eaf1f1c08d09ea64ce8eea0850d47a86975e1c175962a472",
                          "typeString": "literal_string \"invite code already in use\""
                        }
                      ],
                      "id": 4092,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "2519:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4102,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2519:82:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4103,
                  "nodeType": "ExpressionStatement",
                  "src": "2519:82:6"
                },
                {
                  "assignments": [
                    4105
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4105,
                      "mutability": "mutable",
                      "name": "inviter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4185,
                      "src": "2605:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4104,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2605:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4109,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4106,
                      "name": "codeToUser",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3924,
                      "src": "2623:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                        "typeString": "mapping(bytes32 => address)"
                      }
                    },
                    "id": 4108,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4107,
                      "name": "_inviterCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4072,
                      "src": "2634:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "2623:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2605:42:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4114,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4110,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4078,
                        "src": "2651:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4112,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "inviteCode",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3886,
                      "src": "2651:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4113,
                      "name": "_myCode",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4070,
                      "src": "2669:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2651:25:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 4115,
                  "nodeType": "ExpressionStatement",
                  "src": "2651:25:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4120,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4116,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4078,
                        "src": "2680:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4118,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "levelStarted",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3898,
                      "src": "2680:17:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4119,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -17,
                      "src": "2700:3:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2680:23:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4121,
                  "nodeType": "ExpressionStatement",
                  "src": "2680:23:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4126,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4122,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4078,
                        "src": "2707:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4124,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "joinedAt",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3904,
                      "src": "2707:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4125,
                      "name": "now",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": -17,
                      "src": "2723:3:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2707:19:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4127,
                  "nodeType": "ExpressionStatement",
                  "src": "2707:19:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4133,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4128,
                        "name": "codeToUser",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3924,
                        "src": "2730:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 4130,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4129,
                        "name": "_myCode",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4070,
                        "src": "2741:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2730:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4131,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "2752:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4132,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2752:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2730:32:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 4134,
                  "nodeType": "ExpressionStatement",
                  "src": "2730:32:6"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 4140,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4135,
                      "name": "inviter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4105,
                      "src": "2770:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2789:1:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 4137,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "2781:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": {
                          "id": 4136,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2781:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": null,
                            "typeString": null
                          }
                        }
                      },
                      "id": 4139,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2781:10:6",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2770:21:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4178,
                  "nodeType": "IfStatement",
                  "src": "2766:218:6",
                  "trueBody": {
                    "id": 4177,
                    "nodeType": "Block",
                    "src": "2793:191:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4145,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4141,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4078,
                              "src": "2798:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                "typeString": "struct InvitesV1.User storage pointer"
                              }
                            },
                            "id": 4143,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "invitedBy",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3884,
                            "src": "2798:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4144,
                            "name": "inviter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4105,
                            "src": "2815:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "2798:24:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4146,
                        "nodeType": "ExpressionStatement",
                        "src": "2798:24:6"
                      },
                      {
                        "assignments": [
                          4148
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 4148,
                            "mutability": "mutable",
                            "name": "inviterUser",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4177,
                            "src": "2827:24:6",
                            "stateVariable": false,
                            "storageLocation": "storage",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                              "typeString": "struct InvitesV1.User"
                            },
                            "typeName": {
                              "contractScope": null,
                              "id": 4147,
                              "name": "User",
                              "nodeType": "UserDefinedTypeName",
                              "referencedDeclaration": 3909,
                              "src": "2827:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                "typeString": "struct InvitesV1.User"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 4152,
                        "initialValue": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 4149,
                            "name": "users",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3928,
                            "src": "2854:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                              "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                            }
                          },
                          "id": 4151,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 4150,
                            "name": "inviter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4105,
                            "src": "2860:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2854:14:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$3909_storage",
                            "typeString": "struct InvitesV1.User storage ref"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "2827:41:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4158,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2899:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2899:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4153,
                                "name": "inviterUser",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4148,
                                "src": "2873:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                  "typeString": "struct InvitesV1.User storage pointer"
                                }
                              },
                              "id": 4156,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "invitees",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3891,
                              "src": "2873:20:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 4157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2873:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4160,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2873:37:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4161,
                        "nodeType": "ExpressionStatement",
                        "src": "2873:37:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4167,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "2940:3:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 4168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2940:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4162,
                                "name": "inviterUser",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4148,
                                "src": "2915:11:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                  "typeString": "struct InvitesV1.User storage pointer"
                                }
                              },
                              "id": 4165,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pending",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3894,
                              "src": "2915:19:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                "typeString": "address[] storage ref"
                              }
                            },
                            "id": 4166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "push",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2915:24:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                              "typeString": "function (address)"
                            }
                          },
                          "id": 4169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2915:36:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 4170,
                        "nodeType": "ExpressionStatement",
                        "src": "2915:36:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4175,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4171,
                              "name": "stats",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3944,
                              "src": "2956:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Stats_$3882_storage",
                                "typeString": "struct InvitesV1.Stats storage ref"
                              }
                            },
                            "id": 4173,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "totalInvited",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3877,
                            "src": "2956:18:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2978:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "2956:23:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4176,
                        "nodeType": "ExpressionStatement",
                        "src": "2956:23:6"
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4180,
                        "name": "inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4105,
                        "src": "3006:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4181,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "3015:3:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4182,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3015:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 4179,
                      "name": "InviteeJoined",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3952,
                      "src": "2992:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (address,address)"
                      }
                    },
                    "id": 4183,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2992:34:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4184,
                  "nodeType": "EmitStatement",
                  "src": "2987:39:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "5b419a65",
            "id": 4186,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4075,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4074,
                  "name": "isActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4001,
                  "src": "2407:8:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "2407:8:6"
              }
            ],
            "name": "join",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4073,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4070,
                  "mutability": "mutable",
                  "name": "_myCode",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4186,
                  "src": "2361:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4069,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2361:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4072,
                  "mutability": "mutable",
                  "name": "_inviterCode",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4186,
                  "src": "2378:20:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 4071,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2378:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2360:39:6"
            },
            "returnParameters": {
              "id": 4076,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2416:0:6"
            },
            "scope": 4767,
            "src": "2347:683:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4264,
              "nodeType": "Block",
              "src": "3107:492:6",
              "statements": [
                {
                  "assignments": [
                    4194
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4194,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4264,
                      "src": "3111:16:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                        "typeString": "struct InvitesV1.User"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4193,
                        "name": "User",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3909,
                        "src": "3111:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4198,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4195,
                      "name": "users",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3928,
                      "src": "3130:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                        "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                      }
                    },
                    "id": 4197,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4196,
                      "name": "_invitee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4188,
                      "src": "3136:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3130:15:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$3909_storage",
                      "typeString": "struct InvitesV1.User storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3111:34:6"
                },
                {
                  "assignments": [
                    4200
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4200,
                      "mutability": "mutable",
                      "name": "inviter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4264,
                      "src": "3149:19:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                        "typeString": "struct InvitesV1.User"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4199,
                        "name": "User",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3909,
                        "src": "3149:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4205,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4201,
                      "name": "users",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3928,
                      "src": "3171:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                        "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                      }
                    },
                    "id": 4204,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4202,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4194,
                        "src": "3177:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                          "typeString": "struct InvitesV1.User memory"
                        }
                      },
                      "id": 4203,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "invitedBy",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3884,
                      "src": "3177:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3171:21:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$3909_storage",
                      "typeString": "struct InvitesV1.User storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3149:43:6"
                },
                {
                  "assignments": [
                    4207
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4207,
                      "mutability": "mutable",
                      "name": "level",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4264,
                      "src": "3196:18:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                        "typeString": "struct InvitesV1.Level"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4206,
                        "name": "Level",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3920,
                        "src": "3196:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4212,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4208,
                      "name": "levels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3934,
                      "src": "3217:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Level_$3920_storage_$",
                        "typeString": "mapping(uint256 => struct InvitesV1.Level storage ref)"
                      }
                    },
                    "id": 4211,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4209,
                        "name": "inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4200,
                        "src": "3224:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                          "typeString": "struct InvitesV1.User memory"
                        }
                      },
                      "id": 4210,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "level",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3896,
                      "src": "3224:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "3217:21:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Level_$3920_storage",
                      "typeString": "struct InvitesV1.Level storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3196:42:6"
                },
                {
                  "assignments": [
                    4214
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4214,
                      "mutability": "mutable",
                      "name": "isLevelExpired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4264,
                      "src": "3242:19:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4213,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "3242:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4236,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4235,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 4222,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4217,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 4215,
                          "name": "levelExpirationEnabled",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3946,
                          "src": "3267:22:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "74727565",
                          "id": 4216,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3293:4:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "true"
                        },
                        "src": "3267:30:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4221,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4218,
                            "name": "level",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4207,
                            "src": "3305:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                              "typeString": "struct InvitesV1.Level memory"
                            }
                          },
                          "id": 4219,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "daysToComplete",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3915,
                          "src": "3305:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3328:1:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3305:24:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "3267:62:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4234,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4223,
                          "name": "level",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4207,
                          "src": "3337:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                            "typeString": "struct InvitesV1.Level memory"
                          }
                        },
                        "id": 4224,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "daysToComplete",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3915,
                        "src": "3337:20:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4232,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3408:6:6",
                            "subdenomination": "days",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_86400_by_1",
                              "typeString": "int_const 86400"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_86400_by_1",
                              "typeString": "int_const 86400"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4228,
                                  "name": "inviter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4200,
                                  "src": "3382:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                                    "typeString": "struct InvitesV1.User memory"
                                  }
                                },
                                "id": 4229,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "levelStarted",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3898,
                                "src": "3382:20:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4225,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4194,
                                  "src": "3364:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                                    "typeString": "struct InvitesV1.User memory"
                                  }
                                },
                                "id": 4226,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "joinedAt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3904,
                                "src": "3364:13:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7990,
                              "src": "3364:17:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4230,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3364:39:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4231,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8070,
                          "src": "3364:43:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4233,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3364:51:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "3337:78:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3267:148:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3242:173:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4262,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 4258,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 4252,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 4247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 4239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "UnaryOperation",
                            "operator": "!",
                            "prefix": true,
                            "src": "3430:16:6",
                            "subExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4237,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4194,
                                "src": "3431:4:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                                  "typeString": "struct InvitesV1.User memory"
                                }
                              },
                              "id": 4238,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "bountyPaid",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3888,
                              "src": "3431:15:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 4246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 4240,
                                "name": "user",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4194,
                                "src": "3453:4:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                                  "typeString": "struct InvitesV1.User memory"
                                }
                              },
                              "id": 4241,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "invitedBy",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 3884,
                              "src": "3453:14:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4244,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3479:1:6",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 4243,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "3471:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 4242,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3471:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 4245,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3471:10:6",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "3453:28:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "3430:51:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4250,
                              "name": "_invitee",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4188,
                              "src": "3511:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 4248,
                              "name": "identity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3938,
                              "src": "3488:8:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IIdentity_$513",
                                "typeString": "contract IIdentity"
                              }
                            },
                            "id": 4249,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "isWhitelisted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 488,
                            "src": "3488:22:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view external returns (bool)"
                            }
                          },
                          "id": 4251,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3488:32:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "3430:90:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4255,
                              "name": "user",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4194,
                              "src": "3550:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$3909_memory_ptr",
                                "typeString": "struct InvitesV1.User memory"
                              }
                            },
                            "id": 4256,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "invitedBy",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3884,
                            "src": "3550:14:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4253,
                            "name": "identity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3938,
                            "src": "3527:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IIdentity_$513",
                              "typeString": "contract IIdentity"
                            }
                          },
                          "id": 4254,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "isWhitelisted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 488,
                          "src": "3527:22:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view external returns (bool)"
                          }
                        },
                        "id": 4257,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3527:38:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "3430:135:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 4261,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4259,
                        "name": "isLevelExpired",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4214,
                        "src": "3572:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 4260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3590:5:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "src": "3572:23:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "3430:165:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 4192,
                  "id": 4263,
                  "nodeType": "Return",
                  "src": "3420:175:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "6d619ef8",
            "id": 4265,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "canCollectBountyFor",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4189,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4188,
                  "mutability": "mutable",
                  "name": "_invitee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4265,
                  "src": "3062:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4187,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3062:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3061:18:6"
            },
            "returnParameters": {
              "id": 4192,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4191,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4265,
                  "src": "3101:4:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4190,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3101:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3100:6:6"
            },
            "scope": 4767,
            "src": "3033:566:6",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4278,
              "nodeType": "Block",
              "src": "3687:39:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4273,
                        "name": "users",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3928,
                        "src": "3698:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                          "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                        }
                      },
                      "id": 4275,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4274,
                        "name": "_inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4267,
                        "src": "3704:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3698:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_storage",
                        "typeString": "struct InvitesV1.User storage ref"
                      }
                    },
                    "id": 4276,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "invitees",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3891,
                    "src": "3698:24:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "functionReturnParameters": 4272,
                  "id": 4277,
                  "nodeType": "Return",
                  "src": "3691:31:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "e9881a5e",
            "id": 4279,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getInvitees",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4268,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4267,
                  "mutability": "mutable",
                  "name": "_inviter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4279,
                  "src": "3623:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4266,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3623:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3622:18:6"
            },
            "returnParameters": {
              "id": 4272,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4271,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4279,
                  "src": "3668:16:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4269,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3668:7:6",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 4270,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3668:9:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3667:18:6"
            },
            "scope": 4767,
            "src": "3602:124:6",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4374,
              "nodeType": "Block",
              "src": "3821:410:6",
              "statements": [
                {
                  "assignments": [
                    4291
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4291,
                      "mutability": "mutable",
                      "name": "pending",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4374,
                      "src": "3825:24:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4289,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3825:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4290,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3825:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4296,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4292,
                        "name": "users",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3928,
                        "src": "3852:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                          "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                        }
                      },
                      "id": 4294,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4293,
                        "name": "_inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4281,
                        "src": "3858:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "3852:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_storage",
                        "typeString": "struct InvitesV1.User storage ref"
                      }
                    },
                    "id": 4295,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "pending",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3894,
                    "src": "3852:23:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3825:50:6"
                },
                {
                  "assignments": [
                    4298
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4298,
                      "mutability": "mutable",
                      "name": "cur",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4374,
                      "src": "3879:11:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4297,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3879:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4300,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 4299,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3893:1:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3879:15:6"
                },
                {
                  "assignments": [
                    4302
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4302,
                      "mutability": "mutable",
                      "name": "total",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4374,
                      "src": "3898:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4301,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "3898:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4304,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 4303,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "3914:1:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "3898:17:6"
                },
                {
                  "body": {
                    "id": 4327,
                    "nodeType": "Block",
                    "src": "3960:63:6",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 4321,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "3969:29:6",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4315,
                                "name": "users",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3928,
                                "src": "3970:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                                  "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                                }
                              },
                              "id": 4319,
                              "indexExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4316,
                                  "name": "pending",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4291,
                                  "src": "3976:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4318,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 4317,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4306,
                                  "src": "3984:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "3976:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "3970:17:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$3909_storage",
                                "typeString": "struct InvitesV1.User storage ref"
                              }
                            },
                            "id": 4320,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bountyPaid",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3888,
                            "src": "3970:28:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4326,
                        "nodeType": "IfStatement",
                        "src": "3965:54:6",
                        "trueBody": {
                          "id": 4325,
                          "nodeType": "Block",
                          "src": "4000:19:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4323,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4006:7:6",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 4322,
                                  "name": "total",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4302,
                                  "src": "4006:5:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4324,
                              "nodeType": "ExpressionStatement",
                              "src": "4006:7:6"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4311,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4308,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4306,
                      "src": "3935:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4309,
                        "name": "pending",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4291,
                        "src": "3939:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 4310,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "3939:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "3935:18:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4328,
                  "initializationExpression": {
                    "assignments": [
                      4306
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4306,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4328,
                        "src": "3924:9:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4305,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "3924:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4307,
                    "initialValue": null,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "3924:9:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4313,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "3955:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4312,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4306,
                        "src": "3955:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4314,
                    "nodeType": "ExpressionStatement",
                    "src": "3955:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "3919:104:6"
                },
                {
                  "assignments": [
                    4333
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4333,
                      "mutability": "mutable",
                      "name": "result",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4374,
                      "src": "4027:23:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4331,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4027:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4332,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4027:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4339,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4337,
                        "name": "total",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4302,
                        "src": "4067:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 4336,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "NewExpression",
                      "src": "4053:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_address_$dyn_memory_ptr_$",
                        "typeString": "function (uint256) pure returns (address[] memory)"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4334,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4057:7:6",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4335,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4057:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      }
                    },
                    "id": 4338,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4053:20:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4027:46:6"
                },
                {
                  "body": {
                    "id": 4370,
                    "nodeType": "Block",
                    "src": "4119:91:6",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "id": 4356,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "!",
                          "prefix": true,
                          "src": "4128:29:6",
                          "subExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4350,
                                "name": "users",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3928,
                                "src": "4129:5:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                                  "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                                }
                              },
                              "id": 4354,
                              "indexExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4351,
                                  "name": "pending",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4291,
                                  "src": "4135:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                    "typeString": "address[] memory"
                                  }
                                },
                                "id": 4353,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 4352,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4341,
                                  "src": "4143:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "4135:10:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4129:17:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$3909_storage",
                                "typeString": "struct InvitesV1.User storage ref"
                              }
                            },
                            "id": 4355,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bountyPaid",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3888,
                            "src": "4129:28:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4369,
                        "nodeType": "IfStatement",
                        "src": "4124:82:6",
                        "trueBody": {
                          "id": 4368,
                          "nodeType": "Block",
                          "src": "4159:47:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4363,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4357,
                                    "name": "result",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4333,
                                    "src": "4165:6:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 4359,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4358,
                                    "name": "cur",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4298,
                                    "src": "4172:3:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "4165:11:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 4360,
                                    "name": "pending",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4291,
                                    "src": "4179:7:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 4362,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 4361,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4341,
                                    "src": "4187:1:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4179:10:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4165:24:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 4364,
                              "nodeType": "ExpressionStatement",
                              "src": "4165:24:6"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4195:5:6",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 4365,
                                  "name": "cur",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4298,
                                  "src": "4195:3:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4367,
                              "nodeType": "ExpressionStatement",
                              "src": "4195:5:6"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4346,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4343,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4341,
                      "src": "4094:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4344,
                        "name": "pending",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4291,
                        "src": "4098:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 4345,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4098:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4094:18:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4371,
                  "initializationExpression": {
                    "assignments": [
                      4341
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4341,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4371,
                        "src": "4083:9:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4340,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4083:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4342,
                    "initialValue": null,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4083:9:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4348,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4114:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4347,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4341,
                        "src": "4114:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4349,
                    "nodeType": "ExpressionStatement",
                    "src": "4114:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "4078:132:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4372,
                    "name": "result",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4333,
                    "src": "4221:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                      "typeString": "address[] memory"
                    }
                  },
                  "functionReturnParameters": 4286,
                  "id": 4373,
                  "nodeType": "Return",
                  "src": "4214:13:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "e951a3aa",
            "id": 4375,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPendingInvitees",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4282,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4281,
                  "mutability": "mutable",
                  "name": "_inviter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4375,
                  "src": "3757:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4280,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3757:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3756:18:6"
            },
            "returnParameters": {
              "id": 4286,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4285,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4375,
                  "src": "3802:16:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                    "typeString": "address[]"
                  },
                  "typeName": {
                    "baseType": {
                      "id": 4283,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "3802:7:6",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "id": 4284,
                    "length": null,
                    "nodeType": "ArrayTypeName",
                    "src": "3802:9:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                      "typeString": "address[]"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3801:18:6"
            },
            "scope": 4767,
            "src": "3729:502:6",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4420,
              "nodeType": "Block",
              "src": "4317:204:6",
              "statements": [
                {
                  "assignments": [
                    4386
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4386,
                      "mutability": "mutable",
                      "name": "pending",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4420,
                      "src": "4321:24:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4384,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4321:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4385,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4321:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4391,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 4387,
                        "name": "users",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3928,
                        "src": "4348:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                          "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                        }
                      },
                      "id": 4389,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 4388,
                        "name": "_inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4377,
                        "src": "4354:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "4348:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_storage",
                        "typeString": "struct InvitesV1.User storage ref"
                      }
                    },
                    "id": 4390,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "pending",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 3894,
                    "src": "4348:23:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                      "typeString": "address[] storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4321:50:6"
                },
                {
                  "assignments": [
                    4393
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4393,
                      "mutability": "mutable",
                      "name": "total",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4420,
                      "src": "4375:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4392,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "4375:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4395,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "30",
                    "id": 4394,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "4391:1:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_0_by_1",
                      "typeString": "int_const 0"
                    },
                    "value": "0"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4375:17:6"
                },
                {
                  "body": {
                    "id": 4416,
                    "nodeType": "Block",
                    "src": "4437:65:6",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4407,
                                "name": "pending",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4386,
                                "src": "4466:7:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                  "typeString": "address[] memory"
                                }
                              },
                              "id": 4409,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4408,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4397,
                                "src": "4474:1:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "4466:10:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4406,
                            "name": "canCollectBountyFor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4265,
                            "src": "4446:19:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 4410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4446:31:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4415,
                        "nodeType": "IfStatement",
                        "src": "4442:56:6",
                        "trueBody": {
                          "id": 4414,
                          "nodeType": "Block",
                          "src": "4479:19:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 4412,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "++",
                                "prefix": false,
                                "src": "4485:7:6",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "id": 4411,
                                  "name": "total",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4393,
                                  "src": "4485:5:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4413,
                              "nodeType": "ExpressionStatement",
                              "src": "4485:7:6"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4402,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4399,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4397,
                      "src": "4412:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4400,
                        "name": "pending",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4386,
                        "src": "4416:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                          "typeString": "address[] memory"
                        }
                      },
                      "id": 4401,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "4416:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "4412:18:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4417,
                  "initializationExpression": {
                    "assignments": [
                      4397
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4397,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4417,
                        "src": "4401:9:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4396,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "4401:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4398,
                    "initialValue": null,
                    "nodeType": "VariableDeclarationStatement",
                    "src": "4401:9:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4404,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "4432:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4403,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4397,
                        "src": "4432:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4405,
                    "nodeType": "ExpressionStatement",
                    "src": "4432:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "4396:106:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4418,
                    "name": "total",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 4393,
                    "src": "4512:5:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 4381,
                  "id": 4419,
                  "nodeType": "Return",
                  "src": "4505:12:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "41155d5e",
            "id": 4421,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getPendingBounties",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4378,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4377,
                  "mutability": "mutable",
                  "name": "_inviter",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4421,
                  "src": "4262:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4376,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4262:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4261:18:6"
            },
            "returnParameters": {
              "id": 4381,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4380,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4421,
                  "src": "4307:7:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4379,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "4307:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4306:9:6"
            },
            "scope": 4767,
            "src": "4234:287:6",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4581,
              "nodeType": "Block",
              "src": "4671:1145:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4431,
                            "name": "_invitee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4424,
                            "src": "4707:8:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4430,
                          "name": "canCollectBountyFor",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4265,
                          "src": "4687:19:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                            "typeString": "function (address) view returns (bool)"
                          }
                        },
                        "id": 4432,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4687:29:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "75736572206e6f7420656c6c6967626c6520666f7220626f756e747920796574",
                        "id": 4433,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "4721:34:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_db56c51bd2c17461ca3bc9ebc8ab0587e6152d748c7243afc10cfdd05aed84f0",
                          "typeString": "literal_string \"user not elligble for bounty yet\""
                        },
                        "value": "user not elligble for bounty yet"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_db56c51bd2c17461ca3bc9ebc8ab0587e6152d748c7243afc10cfdd05aed84f0",
                          "typeString": "literal_string \"user not elligble for bounty yet\""
                        }
                      ],
                      "id": 4429,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        -18,
                        -18
                      ],
                      "referencedDeclaration": -18,
                      "src": "4675:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 4434,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4675:84:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4435,
                  "nodeType": "ExpressionStatement",
                  "src": "4675:84:6"
                },
                {
                  "assignments": [
                    4437
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4437,
                      "mutability": "mutable",
                      "name": "user",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4581,
                      "src": "4764:17:6",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                        "typeString": "struct InvitesV1.User"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4436,
                        "name": "User",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3909,
                        "src": "4764:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4441,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4438,
                      "name": "users",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3928,
                      "src": "4784:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                        "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                      }
                    },
                    "id": 4440,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4439,
                      "name": "_invitee",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4424,
                      "src": "4790:8:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4784:15:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$3909_storage",
                      "typeString": "struct InvitesV1.User storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4764:35:6"
                },
                {
                  "assignments": [
                    4443
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4443,
                      "mutability": "mutable",
                      "name": "inviter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4581,
                      "src": "4803:20:6",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                        "typeString": "struct InvitesV1.User"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4442,
                        "name": "User",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3909,
                        "src": "4803:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4448,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4444,
                      "name": "users",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3928,
                      "src": "4826:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                        "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                      }
                    },
                    "id": 4447,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4445,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4437,
                        "src": "4832:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4446,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "invitedBy",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3884,
                      "src": "4832:14:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4826:21:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$3909_storage",
                      "typeString": "struct InvitesV1.User storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4803:44:6"
                },
                {
                  "assignments": [
                    4450
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4450,
                      "mutability": "mutable",
                      "name": "level",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4581,
                      "src": "4851:18:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                        "typeString": "struct InvitesV1.Level"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4449,
                        "name": "Level",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3920,
                        "src": "4851:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4455,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4451,
                      "name": "levels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3934,
                      "src": "4872:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Level_$3920_storage_$",
                        "typeString": "mapping(uint256 => struct InvitesV1.Level storage ref)"
                      }
                    },
                    "id": 4454,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4452,
                        "name": "inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4443,
                        "src": "4879:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4453,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "level",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3896,
                      "src": "4879:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4872:21:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Level_$3920_storage",
                      "typeString": "struct InvitesV1.Level storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4851:42:6"
                },
                {
                  "assignments": [
                    4457
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4457,
                      "mutability": "mutable",
                      "name": "isLevelExpired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4581,
                      "src": "4898:19:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4456,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "4898:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4481,
                  "initialValue": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4480,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 4467,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4461,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4458,
                            "name": "level",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4450,
                            "src": "4923:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                              "typeString": "struct InvitesV1.Level memory"
                            }
                          },
                          "id": 4459,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "daysToComplete",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3915,
                          "src": "4923:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4460,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4946:1:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "4923:24:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4466,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4462,
                            "name": "user",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4437,
                            "src": "4955:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                              "typeString": "struct InvitesV1.User storage pointer"
                            }
                          },
                          "id": 4463,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "joinedAt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3904,
                          "src": "4955:13:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4464,
                            "name": "inviter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4443,
                            "src": "4971:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                              "typeString": "struct InvitesV1.User storage pointer"
                            }
                          },
                          "id": 4465,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "levelStarted",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3898,
                          "src": "4971:20:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4955:36:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "4923:68:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "id": 4479,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4468,
                          "name": "level",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4450,
                          "src": "5033:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                            "typeString": "struct InvitesV1.Level memory"
                          }
                        },
                        "id": 4469,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "daysToComplete",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3915,
                        "src": "5033:20:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "<",
                      "rightExpression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5104:6:6",
                            "subdenomination": "days",
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_86400_by_1",
                              "typeString": "int_const 86400"
                            },
                            "value": "1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_86400_by_1",
                              "typeString": "int_const 86400"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4473,
                                  "name": "inviter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4443,
                                  "src": "5078:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                    "typeString": "struct InvitesV1.User storage pointer"
                                  }
                                },
                                "id": 4474,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "levelStarted",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3898,
                                "src": "5078:20:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4470,
                                  "name": "user",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4437,
                                  "src": "5060:4:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                    "typeString": "struct InvitesV1.User storage pointer"
                                  }
                                },
                                "id": 4471,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "joinedAt",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3904,
                                "src": "5060:13:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 4472,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7990,
                              "src": "5060:17:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 4475,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5060:39:6",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4476,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8070,
                          "src": "5060:43:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4478,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5060:51:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "src": "5033:78:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "4923:188:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4898:213:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4486,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4482,
                        "name": "user",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4437,
                        "src": "5164:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4484,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bountyPaid",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3888,
                      "src": "5164:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 4485,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5182:4:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "5164:22:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4487,
                  "nodeType": "ExpressionStatement",
                  "src": "5164:22:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4492,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4488,
                        "name": "inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4443,
                        "src": "5190:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4490,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalApprovedInvites",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3900,
                      "src": "5190:28:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 4491,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5222:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5190:33:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4493,
                  "nodeType": "ExpressionStatement",
                  "src": "5190:33:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4499,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4494,
                        "name": "inviter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4443,
                        "src": "5227:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User storage pointer"
                        }
                      },
                      "id": 4496,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalEarned",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3902,
                      "src": "5227:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4497,
                        "name": "level",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4450,
                        "src": "5250:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                          "typeString": "struct InvitesV1.Level memory"
                        }
                      },
                      "id": 4498,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "bounty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3913,
                      "src": "5250:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5227:35:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4500,
                  "nodeType": "ExpressionStatement",
                  "src": "5227:35:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4505,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4501,
                        "name": "stats",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3944,
                        "src": "5266:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Stats_$3882_storage",
                          "typeString": "struct InvitesV1.Stats storage ref"
                        }
                      },
                      "id": 4503,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalApprovedInvites",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3873,
                      "src": "5266:26:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "31",
                      "id": 4504,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "5296:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_1_by_1",
                        "typeString": "int_const 1"
                      },
                      "value": "1"
                    },
                    "src": "5266:31:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4506,
                  "nodeType": "ExpressionStatement",
                  "src": "5266:31:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4512,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4507,
                        "name": "stats",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3944,
                        "src": "5301:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Stats_$3882_storage",
                          "typeString": "struct InvitesV1.Stats storage ref"
                        }
                      },
                      "id": 4509,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalBountiesPaid",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3875,
                      "src": "5301:23:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "+=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4510,
                        "name": "level",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4450,
                        "src": "5328:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                          "typeString": "struct InvitesV1.Level memory"
                        }
                      },
                      "id": 4511,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "bounty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3913,
                      "src": "5328:12:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "5301:39:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4513,
                  "nodeType": "ExpressionStatement",
                  "src": "5301:39:6"
                },
                {
                  "assignments": [
                    4515
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4515,
                      "mutability": "mutable",
                      "name": "earnedLevel",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4581,
                      "src": "5345:16:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4514,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5345:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4517,
                  "initialValue": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 4516,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "5364:5:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5345:24:6"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "id": 4531,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 4527,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4521,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4518,
                            "name": "level",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4450,
                            "src": "5381:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                              "typeString": "struct InvitesV1.Level memory"
                            }
                          },
                          "id": 4519,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "toNext",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3911,
                          "src": "5381:12:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 4520,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5396:1:6",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5381:16:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "&&",
                      "rightExpression": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 4526,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4522,
                            "name": "inviter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4443,
                            "src": "5404:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                              "typeString": "struct InvitesV1.User storage pointer"
                            }
                          },
                          "id": 4523,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalApprovedInvites",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3900,
                          "src": "5404:28:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 4524,
                            "name": "level",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4450,
                            "src": "5436:5:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                              "typeString": "struct InvitesV1.Level memory"
                            }
                          },
                          "id": 4525,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "toNext",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3911,
                          "src": "5436:12:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5404:44:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "src": "5381:67:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "&&",
                    "rightExpression": {
                      "argumentTypes": null,
                      "commonType": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "id": 4530,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "leftExpression": {
                        "argumentTypes": null,
                        "id": 4528,
                        "name": "isLevelExpired",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4457,
                        "src": "5455:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "BinaryOperation",
                      "operator": "==",
                      "rightExpression": {
                        "argumentTypes": null,
                        "hexValue": "66616c7365",
                        "id": 4529,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "5473:5:6",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "false"
                      },
                      "src": "5455:23:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "5381:97:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 4549,
                  "nodeType": "IfStatement",
                  "src": "5373:192:6",
                  "trueBody": {
                    "id": 4548,
                    "nodeType": "Block",
                    "src": "5483:82:6",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4536,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4532,
                              "name": "inviter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4443,
                              "src": "5488:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                "typeString": "struct InvitesV1.User storage pointer"
                              }
                            },
                            "id": 4534,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "level",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3896,
                            "src": "5488:13:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "+=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 4535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5505:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "5488:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4537,
                        "nodeType": "ExpressionStatement",
                        "src": "5488:18:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4542,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4538,
                              "name": "inviter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4443,
                              "src": "5511:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                "typeString": "struct InvitesV1.User storage pointer"
                              }
                            },
                            "id": 4540,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "memberName": "levelStarted",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3898,
                            "src": "5511:20:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 4541,
                            "name": "now",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -17,
                            "src": "5534:3:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "5511:26:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4543,
                        "nodeType": "ExpressionStatement",
                        "src": "5511:26:6"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 4546,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 4544,
                            "name": "earnedLevel",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4515,
                            "src": "5542:11:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 4545,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5556:4:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "src": "5542:18:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "id": 4547,
                        "nodeType": "ExpressionStatement",
                        "src": "5542:18:6"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4553,
                          "name": "user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4437,
                          "src": "5589:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                            "typeString": "struct InvitesV1.User storage pointer"
                          }
                        },
                        "id": 4554,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "invitedBy",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3884,
                        "src": "5589:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4555,
                          "name": "level",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4450,
                          "src": "5605:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                            "typeString": "struct InvitesV1.Level memory"
                          }
                        },
                        "id": 4556,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "bounty",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3913,
                        "src": "5605:12:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4550,
                        "name": "goodDollar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3940,
                        "src": "5569:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_cERC20_$309",
                          "typeString": "contract cERC20"
                        }
                      },
                      "id": 4552,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 299,
                      "src": "5569:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 4557,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5569:49:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4558,
                  "nodeType": "ExpressionStatement",
                  "src": "5569:49:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4562,
                        "name": "_invitee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4424,
                        "src": "5642:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "32",
                            "id": 4566,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5669:1:6",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            },
                            "value": "2"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_2_by_1",
                              "typeString": "int_const 2"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4563,
                              "name": "level",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4450,
                              "src": "5652:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                                "typeString": "struct InvitesV1.Level memory"
                              }
                            },
                            "id": 4564,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "bounty",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 3913,
                            "src": "5652:12:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 4565,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "div",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 8070,
                          "src": "5652:16:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4567,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5652:19:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4559,
                        "name": "goodDollar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3940,
                        "src": "5622:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_cERC20_$309",
                          "typeString": "contract cERC20"
                        }
                      },
                      "id": 4561,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 299,
                      "src": "5622:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 4568,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5622:50:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4569,
                  "nodeType": "ExpressionStatement",
                  "src": "5622:50:6"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4571,
                          "name": "user",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4437,
                          "src": "5730:4:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                            "typeString": "struct InvitesV1.User storage pointer"
                          }
                        },
                        "id": 4572,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "invitedBy",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3884,
                        "src": "5730:14:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4573,
                        "name": "_invitee",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4424,
                        "src": "5749:8:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4574,
                          "name": "level",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4450,
                          "src": "5762:5:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Level_$3920_memory_ptr",
                            "typeString": "struct InvitesV1.Level memory"
                          }
                        },
                        "id": 4575,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "bounty",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3913,
                        "src": "5762:12:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4576,
                          "name": "inviter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4443,
                          "src": "5779:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                            "typeString": "struct InvitesV1.User storage pointer"
                          }
                        },
                        "id": 4577,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "level",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3896,
                        "src": "5779:13:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4578,
                        "name": "earnedLevel",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4515,
                        "src": "5797:11:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 4570,
                      "name": "InviterBounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3964,
                      "src": "5712:13:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_bool_$returns$__$",
                        "typeString": "function (address,address,uint256,uint256,bool)"
                      }
                    },
                    "id": 4579,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5712:100:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4580,
                  "nodeType": "EmitStatement",
                  "src": "5707:105:6"
                }
              ]
            },
            "documentation": {
              "id": 4422,
              "nodeType": "StructuredDocumentation",
              "src": "4524:92:6",
              "text": " @dev  pay bounty for the inviter of _invitee\n invitee need to be whitelisted"
            },
            "functionSelector": "b6567cd5",
            "id": 4582,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4427,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4426,
                  "name": "isActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4001,
                  "src": "4662:8:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4662:8:6"
              }
            ],
            "name": "bountyFor",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4425,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4424,
                  "mutability": "mutable",
                  "name": "_invitee",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4582,
                  "src": "4637:16:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 4423,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "4637:7:6",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4636:18:6"
            },
            "returnParameters": {
              "id": 4428,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4671:0:6"
            },
            "scope": 4767,
            "src": "4618:1198:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4667,
              "nodeType": "Block",
              "src": "5954:616:6",
              "statements": [
                {
                  "assignments": [
                    4589
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4589,
                      "mutability": "mutable",
                      "name": "inviter",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4667,
                      "src": "5958:20:6",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                        "typeString": "struct InvitesV1.User"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4588,
                        "name": "User",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3909,
                        "src": "5958:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                          "typeString": "struct InvitesV1.User"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4594,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4590,
                      "name": "users",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3928,
                      "src": "5981:5:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                        "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                      }
                    },
                    "id": 4593,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4591,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -15,
                        "src": "5987:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 4592,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "5987:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5981:17:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$3909_storage",
                      "typeString": "struct InvitesV1.User storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5958:40:6"
                },
                {
                  "body": {
                    "id": 4665,
                    "nodeType": "Block",
                    "src": "6056:511:6",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4608,
                                  "name": "inviter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4589,
                                  "src": "6085:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                    "typeString": "struct InvitesV1.User storage pointer"
                                  }
                                },
                                "id": 4609,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pending",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3894,
                                "src": "6085:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4611,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4610,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4596,
                                "src": "6101:1:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6085:18:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 4607,
                            "name": "canCollectBountyFor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4265,
                            "src": "6065:19:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$returns$_t_bool_$",
                              "typeString": "function (address) view returns (bool)"
                            }
                          },
                          "id": 4612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6065:39:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4621,
                        "nodeType": "IfStatement",
                        "src": "6061:86:6",
                        "trueBody": {
                          "id": 4620,
                          "nodeType": "Block",
                          "src": "6106:41:6",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4614,
                                        "name": "inviter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4589,
                                        "src": "6122:7:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                          "typeString": "struct InvitesV1.User storage pointer"
                                        }
                                      },
                                      "id": 4615,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "pending",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3894,
                                      "src": "6122:15:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                        "typeString": "address[] storage ref"
                                      }
                                    },
                                    "id": 4617,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 4616,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4596,
                                      "src": "6138:1:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6122:18:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4613,
                                  "name": "bountyFor",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4582,
                                  "src": "6112:9:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$returns$__$",
                                    "typeString": "function (address)"
                                  }
                                },
                                "id": 4618,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6112:29:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4619,
                              "nodeType": "ExpressionStatement",
                              "src": "6112:29:6"
                            }
                          ]
                        }
                      },
                      {
                        "condition": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4622,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3928,
                              "src": "6155:5:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_struct$_User_$3909_storage_$",
                                "typeString": "mapping(address => struct InvitesV1.User storage ref)"
                              }
                            },
                            "id": 4627,
                            "indexExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4623,
                                  "name": "inviter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4589,
                                  "src": "6161:7:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                    "typeString": "struct InvitesV1.User storage pointer"
                                  }
                                },
                                "id": 4624,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pending",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 3894,
                                "src": "6161:15:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                  "typeString": "address[] storage ref"
                                }
                              },
                              "id": 4626,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 4625,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4596,
                                "src": "6177:1:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "6161:18:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6155:25:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$3909_storage",
                              "typeString": "struct InvitesV1.User storage ref"
                            }
                          },
                          "id": 4628,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "bountyPaid",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 3888,
                          "src": "6155:36:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 4664,
                        "nodeType": "IfStatement",
                        "src": "6151:412:6",
                        "trueBody": {
                          "id": 4663,
                          "nodeType": "Block",
                          "src": "6193:370:6",
                          "statements": [
                            {
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4633,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4629,
                                        "name": "inviter",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4589,
                                        "src": "6271:7:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                          "typeString": "struct InvitesV1.User storage pointer"
                                        }
                                      },
                                      "id": 4630,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "pending",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 3894,
                                      "src": "6271:15:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                        "typeString": "address[] storage ref"
                                      }
                                    },
                                    "id": 4631,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "6271:22:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 4632,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6296:1:6",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6271:26:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": ">",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 4634,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4596,
                                  "src": "6300:1:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6271:30:6",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseBody": null,
                              "id": 4655,
                              "nodeType": "IfStatement",
                              "src": "6267:226:6",
                              "trueBody": {
                                "id": 4654,
                                "nodeType": "Block",
                                "src": "6303:190:6",
                                "statements": [
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4649,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4636,
                                            "name": "inviter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4589,
                                            "src": "6310:7:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                              "typeString": "struct InvitesV1.User storage pointer"
                                            }
                                          },
                                          "id": 4639,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "pending",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3894,
                                          "src": "6310:15:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 4640,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "id": 4638,
                                          "name": "i",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4596,
                                          "src": "6326:1:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": true,
                                        "nodeType": "IndexAccess",
                                        "src": "6310:18:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "baseExpression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 4641,
                                            "name": "inviter",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4589,
                                            "src": "6331:7:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                              "typeString": "struct InvitesV1.User storage pointer"
                                            }
                                          },
                                          "id": 4642,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "pending",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 3894,
                                          "src": "6331:15:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                            "typeString": "address[] storage ref"
                                          }
                                        },
                                        "id": 4648,
                                        "indexExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 4647,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4643,
                                                "name": "inviter",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4589,
                                                "src": "6354:7:6",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                                  "typeString": "struct InvitesV1.User storage pointer"
                                                }
                                              },
                                              "id": 4644,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "pending",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 3894,
                                              "src": "6354:15:6",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                                "typeString": "address[] storage ref"
                                              }
                                            },
                                            "id": 4645,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "length",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": null,
                                            "src": "6354:22:6",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "-",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "31",
                                            "id": 4646,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "6379:1:6",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_1_by_1",
                                              "typeString": "int_const 1"
                                            },
                                            "value": "1"
                                          },
                                          "src": "6354:26:6",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "IndexAccess",
                                        "src": "6331:56:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "src": "6310:77:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    "id": 4650,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6310:77:6"
                                  },
                                  {
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4652,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "UnaryOperation",
                                      "operator": "--",
                                      "prefix": false,
                                      "src": "6483:3:6",
                                      "subExpression": {
                                        "argumentTypes": null,
                                        "id": 4651,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4596,
                                        "src": "6483:1:6",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 4653,
                                    "nodeType": "ExpressionStatement",
                                    "src": "6483:3:6"
                                  }
                                ]
                              }
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4656,
                                      "name": "inviter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4589,
                                      "src": "6536:7:6",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                                        "typeString": "struct InvitesV1.User storage pointer"
                                      }
                                    },
                                    "id": 4659,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pending",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 3894,
                                    "src": "6536:15:6",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 4660,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pop",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6536:19:6",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_arraypop_nonpayable$__$returns$__$",
                                    "typeString": "function ()"
                                  }
                                },
                                "id": 4661,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6536:21:6",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 4662,
                              "nodeType": "ExpressionStatement",
                              "src": "6536:21:6"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 4603,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 4599,
                      "name": "i",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4596,
                      "src": "6023:1:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4600,
                          "name": "inviter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4589,
                          "src": "6027:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_User_$3909_storage_ptr",
                            "typeString": "struct InvitesV1.User storage pointer"
                          }
                        },
                        "id": 4601,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "pending",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 3894,
                        "src": "6027:15:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage",
                          "typeString": "address[] storage ref"
                        }
                      },
                      "id": 4602,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "length",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "6027:22:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6023:26:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4666,
                  "initializationExpression": {
                    "assignments": [
                      4596
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 4596,
                        "mutability": "mutable",
                        "name": "i",
                        "nodeType": "VariableDeclaration",
                        "overrides": null,
                        "scope": 4666,
                        "src": "6008:9:6",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 4595,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "6008:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 4598,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 4597,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "6020:1:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "6008:13:6"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 4605,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "6051:3:6",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 4604,
                        "name": "i",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4596,
                        "src": "6051:1:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 4606,
                    "nodeType": "ExpressionStatement",
                    "src": "6051:3:6"
                  },
                  "nodeType": "ForStatement",
                  "src": "6003:564:6"
                }
              ]
            },
            "documentation": {
              "id": 4583,
              "nodeType": "StructuredDocumentation",
              "src": "5819:90:6",
              "text": "@dev collect bounties for invitees by msg.sender that are now whitelisted"
            },
            "functionSelector": "af6346b0",
            "id": 4668,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4586,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4585,
                  "name": "isActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4001,
                  "src": "5945:8:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5945:8:6"
              }
            ],
            "name": "collectBounties",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4584,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5935:2:6"
            },
            "returnParameters": {
              "id": 4587,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "5954:0:6"
            },
            "scope": 4767,
            "src": "5911:659:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4705,
              "nodeType": "Block",
              "src": "6696:128:6",
              "statements": [
                {
                  "assignments": [
                    4682
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4682,
                      "mutability": "mutable",
                      "name": "lvl",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4705,
                      "src": "6700:17:6",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                        "typeString": "struct InvitesV1.Level"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 4681,
                        "name": "Level",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 3920,
                        "src": "6700:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4686,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 4683,
                      "name": "levels",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3934,
                      "src": "6720:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_struct$_Level_$3920_storage_$",
                        "typeString": "mapping(uint256 => struct InvitesV1.Level storage ref)"
                      }
                    },
                    "id": 4685,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 4684,
                      "name": "_lvl",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4670,
                      "src": "6727:4:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6720:12:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Level_$3920_storage",
                      "typeString": "struct InvitesV1.Level storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6700:32:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4691,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4687,
                        "name": "lvl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4682,
                        "src": "6736:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level storage pointer"
                        }
                      },
                      "id": 4689,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "toNext",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3911,
                      "src": "6736:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4690,
                      "name": "_toNext",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4672,
                      "src": "6749:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6736:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4692,
                  "nodeType": "ExpressionStatement",
                  "src": "6736:20:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4697,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4693,
                        "name": "lvl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4682,
                        "src": "6760:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level storage pointer"
                        }
                      },
                      "id": 4695,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "daysToComplete",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3915,
                      "src": "6760:18:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4696,
                      "name": "_daysToComplete",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4676,
                      "src": "6781:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6760:36:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4698,
                  "nodeType": "ExpressionStatement",
                  "src": "6760:36:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4703,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 4699,
                        "name": "lvl",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4682,
                        "src": "6800:3:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Level_$3920_storage_ptr",
                          "typeString": "struct InvitesV1.Level storage pointer"
                        }
                      },
                      "id": 4701,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "bounty",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 3913,
                      "src": "6800:10:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4702,
                      "name": "_bounty",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4674,
                      "src": "6813:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "6800:20:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 4704,
                  "nodeType": "ExpressionStatement",
                  "src": "6800:20:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "b9fb2d18",
            "id": 4706,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4679,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4678,
                  "name": "ownerOrAvatar",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3981,
                  "src": "6682:13:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6682:13:6"
              }
            ],
            "name": "setLevel",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4677,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4670,
                  "mutability": "mutable",
                  "name": "_lvl",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4706,
                  "src": "6594:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4669,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6594:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4672,
                  "mutability": "mutable",
                  "name": "_toNext",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4706,
                  "src": "6610:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4671,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6610:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4674,
                  "mutability": "mutable",
                  "name": "_bounty",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4706,
                  "src": "6629:15:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4673,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6629:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 4676,
                  "mutability": "mutable",
                  "name": "_daysToComplete",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4706,
                  "src": "6648:23:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 4675,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6648:7:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6590:84:6"
            },
            "returnParameters": {
              "id": 4680,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6696:0:6"
            },
            "scope": 4767,
            "src": "6573:251:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4717,
              "nodeType": "Block",
              "src": "6881:24:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4715,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4713,
                      "name": "active",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3942,
                      "src": "6885:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 4714,
                      "name": "_active",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 4708,
                      "src": "6894:7:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "src": "6885:16:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4716,
                  "nodeType": "ExpressionStatement",
                  "src": "6885:16:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "acec338a",
            "id": 4718,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4711,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4710,
                  "name": "ownerOrAvatar",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3981,
                  "src": "6867:13:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6867:13:6"
              }
            ],
            "name": "setActive",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4709,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4708,
                  "mutability": "mutable",
                  "name": "_active",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4718,
                  "src": "6846:12:6",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 4707,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6846:4:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6845:14:6"
            },
            "returnParameters": {
              "id": 4712,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6881:0:6"
            },
            "scope": 4767,
            "src": "6827:78:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4756,
              "nodeType": "Block",
              "src": "6953:165:6",
              "statements": [
                {
                  "assignments": [
                    4726
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 4726,
                      "mutability": "mutable",
                      "name": "gdBalance",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4756,
                      "src": "6957:17:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4725,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "6957:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 4734,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4731,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -28,
                            "src": "7006:4:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_InvitesV1_$4767",
                              "typeString": "contract InvitesV1"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_InvitesV1_$4767",
                              "typeString": "contract InvitesV1"
                            }
                          ],
                          "id": 4730,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "6998:7:6",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_address_$",
                            "typeString": "type(address)"
                          },
                          "typeName": {
                            "id": 4729,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "6998:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 4732,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6998:13:6",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4727,
                        "name": "goodDollar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3940,
                        "src": "6977:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_cERC20_$309",
                          "typeString": "contract cERC20"
                        }
                      },
                      "id": 4728,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "balanceOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 290,
                      "src": "6977:20:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                        "typeString": "function (address) view external returns (uint256)"
                      }
                    },
                    "id": 4733,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "6977:35:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "6957:55:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4738,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3930,
                        "src": "7036:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 4739,
                        "name": "gdBalance",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4726,
                        "src": "7044:9:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4735,
                        "name": "goodDollar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3940,
                        "src": "7016:10:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_cERC20_$309",
                          "typeString": "contract cERC20"
                        }
                      },
                      "id": 4737,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 299,
                      "src": "7016:19:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (address,uint256) external returns (bool)"
                      }
                    },
                    "id": 4740,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7016:38:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4741,
                  "nodeType": "ExpressionStatement",
                  "src": "7016:38:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 4747,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "7082:4:6",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_InvitesV1_$4767",
                                "typeString": "contract InvitesV1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_InvitesV1_$4767",
                                "typeString": "contract InvitesV1"
                              }
                            ],
                            "id": 4746,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7074:7:6",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 4745,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "7074:7:6",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 4748,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7074:13:6",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "balance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "7074:21:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 4742,
                        "name": "avatar",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3930,
                        "src": "7058:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      "id": 4744,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "transfer",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "7058:15:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                        "typeString": "function (uint256)"
                      }
                    },
                    "id": 4750,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7058:38:6",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 4751,
                  "nodeType": "ExpressionStatement",
                  "src": "7058:38:6"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 4754,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 4752,
                      "name": "active",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 3942,
                      "src": "7100:6:6",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "66616c7365",
                      "id": 4753,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "7109:5:6",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "false"
                    },
                    "src": "7100:14:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 4755,
                  "nodeType": "ExpressionStatement",
                  "src": "7100:14:6"
                }
              ]
            },
            "documentation": null,
            "functionSelector": "efbe1c1c",
            "id": 4757,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": null,
                "id": 4721,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4720,
                  "name": "ownerOrAvatar",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 3981,
                  "src": "6930:13:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6930:13:6"
              },
              {
                "arguments": null,
                "id": 4723,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 4722,
                  "name": "isActive",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 4001,
                  "src": "6944:8:6",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$__$",
                    "typeString": "modifier ()"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "6944:8:6"
              }
            ],
            "name": "end",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4719,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6920:2:6"
            },
            "returnParameters": {
              "id": 4724,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6953:0:6"
            },
            "scope": 4767,
            "src": "6908:210:6",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "public"
          },
          {
            "body": {
              "id": 4765,
              "nodeType": "Block",
              "src": "7236:22:6",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "312e322e30",
                    "id": 4763,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "string",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "7247:7:6",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_stringliteral_e374587661e69268352d25204d81b23ce801573f4b09f3545e69536dc085a37a",
                      "typeString": "literal_string \"1.2.0\""
                    },
                    "value": "1.2.0"
                  },
                  "functionReturnParameters": 4762,
                  "id": 4764,
                  "nodeType": "Return",
                  "src": "7240:14:6"
                }
              ]
            },
            "documentation": {
              "id": 4758,
              "nodeType": "StructuredDocumentation",
              "src": "7121:58:6",
              "text": " @dev\n 1.2.0 - final changes before release"
            },
            "functionSelector": "54fd4d50",
            "id": 4766,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "version",
            "nodeType": "FunctionDefinition",
            "overrides": null,
            "parameters": {
              "id": 4759,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7197:2:6"
            },
            "returnParameters": {
              "id": 4762,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 4761,
                  "mutability": "mutable",
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "overrides": null,
                  "scope": 4766,
                  "src": "7221:13:6",
                  "stateVariable": false,
                  "storageLocation": "memory",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_memory_ptr",
                    "typeString": "string"
                  },
                  "typeName": {
                    "id": 4760,
                    "name": "string",
                    "nodeType": "ElementaryTypeName",
                    "src": "7221:6:6",
                    "typeDescriptions": {
                      "typeIdentifier": "t_string_storage_ptr",
                      "typeString": "string"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7220:15:6"
            },
            "scope": 4767,
            "src": "7181:77:6",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "public"
          }
        ],
        "scope": 4768,
        "src": "383:6877:6"
      }
    ],
    "src": "33:7228:6"
  },
  "compiler": {
    "name": "solc",
    "version": "0.6.12+commit.27d51765.Emscripten.clang"
  },
  "networks": {
    "122": {
      "events": {
        "0xd8c638d8979e2ba5dba1f0d66246ee4b1c54b838f0e0a2b601365345eb23b051": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "inviter",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "invitee",
              "type": "address"
            }
          ],
          "name": "InviteeJoined",
          "type": "event"
        },
        "0x6081787cd1bd02ab1576c52f03e8710d792d460e7881c3155d77d23893f3768b": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "inviter",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "invitee",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "bountyPaid",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "inviterLevel",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "bool",
              "name": "earnedLevel",
              "type": "bool"
            }
          ],
          "name": "InviterBounty",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x0e9C269afD9Ee20a349507c61092F58A636A1ed3",
      "transactionHash": "0x0e7fdaadfd7cb74d4f4e6e8d20b1601518a17cd97ef2a1a2c795dbc31f7184da"
    }
  },
  "schemaVersion": "3.3.0",
  "updatedAt": "2021-01-17T13:46:15.290Z",
  "networkType": "ethereum",
  "devdoc": {
    "kind": "dev",
    "methods": {
      "bountyFor(address)": {
        "details": "pay bounty for the inviter of _invitee invitee need to be whitelisted"
      },
      "collectBounties()": {
        "details": "collect bounties for invitees by msg.sender that are now whitelisted"
      },
      "version()": {
        "details": "1.2.0 - final changes before release"
      }
    },
    "title": "InvitesV1 contract that handles invites with pre allocated bounty pool 1.1 adds invitee bonus",
    "version": 1
  },
  "userdoc": {
    "kind": "user",
    "methods": {},
    "version": 1
  }
}