{
  "contractName": "TieredBallot",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "group",
          "type": "bytes32"
        }
      ],
      "name": "groupPoolCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getGroupCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getPool",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "activate",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "removeAdmin",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "p",
          "type": "address"
        }
      ],
      "name": "poolExists",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "isAdmin",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "electionPhase",
      "outputs": [
        {
          "name": "",
          "type": "uint8"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "abort",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "p",
          "type": "address"
        }
      ],
      "name": "removePool",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "voteId",
          "type": "bytes32"
        }
      ],
      "name": "castVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "group",
          "type": "bytes32"
        }
      ],
      "name": "removeGroup",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "close",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "election",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "pool",
          "type": "address"
        },
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getPoolGroupAt",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "removeSelf",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "pool",
          "type": "address"
        },
        {
          "name": "i",
          "type": "uint256"
        }
      ],
      "name": "getPoolVoter",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "addr",
          "type": "address"
        }
      ],
      "name": "addAdmin",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "group",
          "type": "bytes32"
        },
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getGroupPool",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "p",
          "type": "address"
        }
      ],
      "name": "getPoolIndex",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "checkPools",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getPoolCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "pool",
          "type": "address"
        }
      ],
      "name": "getPoolVoterCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isLocked",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "unlock",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "metadataLocation",
      "outputs": [
        {
          "name": "",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isClosed",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "getGroup",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "checkElection",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "p",
          "type": "address"
        }
      ],
      "name": "addPool",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "pool",
          "type": "address"
        },
        {
          "name": "group",
          "type": "bytes32"
        }
      ],
      "name": "addPoolToGroup",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "pool",
          "type": "address"
        }
      ],
      "name": "getPoolGroupCount",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "checkConfig",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [],
      "name": "lock",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "group",
          "type": "bytes32"
        }
      ],
      "name": "addGroup",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "name": "electionAddress",
          "type": "address"
        },
        {
          "name": "ownerAddress",
          "type": "address"
        },
        {
          "name": "location",
          "type": "string"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "name": "pool",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "voteId",
          "type": "bytes32"
        }
      ],
      "name": "BallotVote",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Closed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Activated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Aborted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Locked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unlocked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    }
  ],
  "bytecode": "0x60606040526002805461ffff1916905534156200001b57600080fd5b60405162001e3638038062001e3683398101604052808051919060200180519190602001805160008054600160a060020a03338116600160a060020a031990921691909117825585168152600160208190526040909120805460ff19169091179055909101905081816003818051620000999291602001906200017b565b505050600160a060020a0383161515620000b257600080fd5b600c8054600160a060020a031916600160a060020a03851617905573__Bytes32Set____________________________63fffd959260077f414c4c00000000000000000000000000000000000000000000000000000000006040517c010000000000000000000000000000000000000000000000000000000063ffffffff85160281526004810192909252602482015260440160006040518083038186803b15156200015d57600080fd5b6102c65a03f415156200016f57600080fd5b50505050505062000220565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620001be57805160ff1916838001178555620001ee565b82800160010185558215620001ee579182015b82811115620001ee578251825591602001919060010190620001d1565b50620001fc92915062000200565b5090565b6200021d91905b80821115620001fc576000815560010162000207565b90565b611c0680620002306000396000f3006060604052600436106101b35763ffffffff60e060020a600035041663027defc181146101b857806306545a93146101e0578063068bcd8d146101f35780630f15f4c0146102255780631785f53c1461023a5780631e1c6a071461025957806324d7806c1461028c578063265050b6146102ab57806335a063b4146102e25780633b7d0946146102f55780633efafb6e14610314578063432732131461032a57806343d726d6146103405780634b1d3ede14610353578063597c92f7146103665780635e898dac1461038857806368e3e6b61461039b57806370480275146103bd5780637a4e367c146103dc57806387063850146103f55780638da5cb5b146104145780638e3d89cb146104275780638eec5d701461043a578063978daca71461044d578063a4e2d6341461046c578063a69df4b51461047f578063b86901af14610492578063c2b6b58c1461051c578063ceb606541461052f578063d1bdd4d314610545578063d914cd4b14610558578063e5d3b25814610577578063e5de025a14610599578063f098fe47146105b8578063f2fde38b146105cb578063f83d08ba146105ea578063fe2b699a146105fd575b600080fd5b34156101c357600080fd5b6101ce600435610613565b60405190815260200160405180910390f35b34156101eb57600080fd5b6101ce61069a565b34156101fe57600080fd5b610209600435610714565b604051600160a060020a03909116815260200160405180910390f35b341561023057600080fd5b610238610774565b005b341561024557600080fd5b610238600160a060020a036004351661080d565b341561026457600080fd5b610278600160a060020a0360043516610849565b604051901515815260200160405180910390f35b341561029757600080fd5b610278600160a060020a03600435166108b2565b34156102b657600080fd5b6102be610901565b604051808260038111156102ce57fe5b60ff16815260200191505060405180910390f35b34156102ed57600080fd5b61023861090f565b341561030057600080fd5b610238600160a060020a0360043516610960565b341561031f57600080fd5b610238600435610a1f565b341561033557600080fd5b610238600435610b97565b341561034b57600080fd5b610238610ddd565b341561035e57600080fd5b610209610e63565b341561037157600080fd5b6101ce600160a060020a0360043516602435610e72565b341561039357600080fd5b610238610f0b565b34156103a657600080fd5b6101ce600160a060020a0360043516602435610f41565b34156103c857600080fd5b610238600160a060020a0360043516610f79565b34156103e757600080fd5b610209600435602435610fbb565b341561040057600080fd5b6101ce600160a060020a0360043516611029565b341561041f57600080fd5b610209611092565b341561043257600080fd5b6102786110a1565b341561044557600080fd5b6101ce6113af565b341561045857600080fd5b6101ce600160a060020a0360043516611409565b341561047757600080fd5b610278611424565b341561048a57600080fd5b61023861142d565b341561049d57600080fd5b6104a561148a565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156104e15780820151838201526020016104c9565b50505050905090810190601f16801561050e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561052757600080fd5b610278611528565b341561053a57600080fd5b6101ce600435611547565b341561055057600080fd5b6102786115a7565b341561056357600080fd5b610238600160a060020a036004351661162e565b341561058257600080fd5b610238600160a060020a0360043516602435611717565b34156105a457600080fd5b6101ce600160a060020a036004351661197e565b34156105c357600080fd5b6102786119ef565b34156105d657600080fd5b610238600160a060020a0360043516611a08565b34156105f557600080fd5b610238611aa3565b341561060857600080fd5b610238600435611b02565b6000818152600a602052604080822073__AddressSet____________________________9163913aa6cd91908490516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b151561067a57600080fd5b6102c65a03f4151561068b57600080fd5b50505060405180519392505050565b600073__Bytes32Set____________________________63364061116007836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b15156106f457600080fd5b6102c65a03f4151561070557600080fd5b50505060405180519150505b90565b600073__AddressSet____________________________635c2125a7600484846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561067a57600080fd5b61077c611424565b15801561079e57506000600254610100900460ff16600381111561079c57fe5b145b15156107a957600080fd5b6107b2336108b2565b15156107bd57600080fd5b6107c56119ef565b15156107d057600080fd5b6002805461ff0019166101001790557fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b060405160405180910390a1565b60005433600160a060020a0390811691161461082857600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b600073__AddressSet____________________________63758241e0600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561067a57600080fd5b6000600160a060020a038216158015906108fb5750600054600160a060020a03838116911614806108fb5750600160a060020a03821660009081526001602052604090205460ff165b92915050565b600254610100900460ff1681565b610918336108b2565b151561092357600080fd5b6002805461ff0019166103001790557f72c874aeff0b183a56e2b79c71b46e1aed4dee5e09862134b8821ba2fddbf8bf60405160405180910390a1565b610968611424565b15801561098a57506000600254610100900460ff16600381111561098857fe5b145b151561099557600080fd5b61099e336108b2565b15156109a957600080fd5b73__AddressSet____________________________63e134066a60048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b1515610a0857600080fd5b6102c65a03f41515610a1957600080fd5b50505050565b610a27611424565b158015610a4957506001600254610100900460ff166003811115610a4757fe5b145b1515610a5457600080fd5b73__AddressSet____________________________63758241e060043360006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b1515610abc57600080fd5b6102c65a03f41515610acd57600080fd5b505050604051805190501515610ae257600080fd5b6000818152600d602052604090205460ff1615610afe57600080fd5b6000818152600d60209081526040808320805460ff19166001908117909155600160a060020a0333168452600e909252909120805490918101610b418382611ba1565b5060009182526020909120018190557f8da004b68c600da3aa991b5e006cb35a6909fb3a11e86cd1e36b7d97922da4a53382604051600160a060020a03909216825260208201526040908101905180910390a150565b600080610ba2611424565b158015610bc457506000600254610100900460ff166003811115610bc257fe5b145b1515610bcf57600080fd5b610bd8336108b2565b1515610be357600080fd5b73__Bytes32Set____________________________639e3084b060078560405160e060020a63ffffffff85160281526004810192909252602482015260440160006040518083038186803b1515610c3957600080fd5b6102c65a03f41515610c4a57600080fd5b505050600091505b73__AddressSet____________________________63913aa6cd600460006040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b1515610cab57600080fd5b6102c65a03f41515610cbc57600080fd5b50505060405180519050821015610dd85773__AddressSet____________________________635c2125a760048460006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610d2c57600080fd5b6102c65a03f41515610d3d57600080fd5b5050506040518051600160a060020a0381166000908152600b60205260409081902091935073__Bytes32Set____________________________9250639e3084b0919086905160e060020a63ffffffff85160281526004810192909252602482015260440160006040518083038186803b1515610db957600080fd5b6102c65a03f41515610dca57600080fd5b505060019092019150610c52565b505050565b610de5611424565b158015610e0757506001600254610100900460ff166003811115610e0557fe5b145b1515610e1257600080fd5b610e1b336108b2565b1515610e2657600080fd5b6002805461ff0019166102001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b600c54600160a060020a031681565b600160a060020a0382166000908152600b602052604080822073__Bytes32Set____________________________91639286e541919085908590516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610eea57600080fd5b6102c65a03f41515610efb57600080fd5b5050506040518051949350505050565b610f14336108b2565b1515610f1f57600080fd5b600160a060020a0333166000908152600160205260409020805460ff19169055565b600160a060020a0382166000908152600e60205260408120805483908110610f6557fe5b906000526020600020900154905092915050565b60005433600160a060020a03908116911614610f9457600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b6000828152600a602052604080822073__AddressSet____________________________91635c2125a7919085908590516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610eea57600080fd5b600073__AddressSet____________________________6318c40249600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561067a57600080fd5b600054600160a060020a031681565b60008073__AddressSet____________________________63913aa6cd6004836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b15156110fc57600080fd5b6102c65a03f4151561110d57600080fd5b50505060405180511515905061112657600091506113ab565b5060005b73__AddressSet____________________________63913aa6cd600460006040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b151561118357600080fd5b6102c65a03f4151561119457600080fd5b505050604051805190508110156113a65773__AddressSet____________________________635c2125a760048360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561120457600080fd5b6102c65a03f4151561121557600080fd5b50505060405180519050600160a060020a031663138b1fa03060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561127557600080fd5b6102c65a03f1151561128657600080fd5b50505060405180519050151561129f57600091506113ab565b600c54600160a060020a031673__AddressSet____________________________635c2125a760048460006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561130a57600080fd5b6102c65a03f4151561131b57600080fd5b50505060405180519050600160a060020a0316634b1d3ede6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561136a57600080fd5b6102c65a03f1151561137b57600080fd5b50505060405180519050600160a060020a031614151561139e57600091506113ab565b60010161112a565b600191505b5090565b600073__AddressSet____________________________63913aa6cd6004836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b15156106f457600080fd5b600160a060020a03166000908152600e602052604090205490565b60025460ff1690565b611436336108b2565b151561144157600080fd5b60025460ff16151561145257600080fd5b6002805460ff191690557f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115205780601f106114f557610100808354040283529160200191611520565b820191906000526020600020905b81548152906001019060200180831161150357829003601f168201915b505050505081565b600060028054610100900460ff16600381111561154157fe5b14905090565b600073__Bytes32Set____________________________639286e541600784846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561067a57600080fd5b600c54600090600160a060020a0316158015906116295750600c54600160a060020a031663138b1fa03060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561161857600080fd5b6102c65a03f1151561070557600080fd5b905090565b611636611424565b15801561165857506000600254610100900460ff16600381111561165657fe5b145b151561166357600080fd5b61166c336108b2565b151561167757600080fd5b73__AddressSet____________________________63f9802f8560048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156116d657600080fd5b6102c65a03f415156116e757600080fd5b505050611714817f414c4c0000000000000000000000000000000000000000000000000000000000611717565b50565b61171f611424565b15801561174157506000600254610100900460ff16600381111561173f57fe5b145b151561174c57600080fd5b611755336108b2565b151561176057600080fd5b73__Bytes32Set____________________________63932dd83960078360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156117bf57600080fd5b6102c65a03f415156117d057600080fd5b5050506040518051905015156117e557600080fd5b73__AddressSet____________________________63758241e060048460006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561184d57600080fd5b6102c65a03f4151561185e57600080fd5b50505060405180519050151561187357600080fd5b6000818152600a60205260409081902073__AddressSet____________________________9163f9802f85919085905160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156118e257600080fd5b6102c65a03f415156118f357600080fd5b505050600160a060020a0382166000908152600b60205260409081902073__Bytes32Set____________________________9163fffd9592919084905160e060020a63ffffffff85160281526004810192909252602482015260440160006040518083038186803b151561196657600080fd5b6102c65a03f4151561197757600080fd5b5050505050565b600160a060020a0381166000908152600b602052604080822073__Bytes32Set____________________________91633640611191908490516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b151561067a57600080fd5b60006119f96115a7565b801561162957506116296110a1565b60005433600160a060020a03908116911614611a2357600080fd5b600160a060020a0381161515611a3857600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611aac336108b2565b1515611ab757600080fd5b60025460ff1615611ac757600080fd5b6002805460ff191660011790557f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b60405160405180910390a1565b611b0a611424565b158015611b2c57506000600254610100900460ff166003811115611b2a57fe5b145b1515611b3757600080fd5b611b40336108b2565b1515611b4b57600080fd5b73__Bytes32Set____________________________63fffd959260078360405160e060020a63ffffffff85160281526004810192909252602482015260440160006040518083038186803b1515610a0857600080fd5b815481835581811511610dd857600083815260209020610dd891810190830161071191905b808211156113ab5760008155600101611bc65600a165627a7a72305820fa82f729e694d819b196e8d2dbff6242c400a6b4b91c3138a404da341e2dcc030029",
  "deployedBytecode": "0x6060604052600436106101b35763ffffffff60e060020a600035041663027defc181146101b857806306545a93146101e0578063068bcd8d146101f35780630f15f4c0146102255780631785f53c1461023a5780631e1c6a071461025957806324d7806c1461028c578063265050b6146102ab57806335a063b4146102e25780633b7d0946146102f55780633efafb6e14610314578063432732131461032a57806343d726d6146103405780634b1d3ede14610353578063597c92f7146103665780635e898dac1461038857806368e3e6b61461039b57806370480275146103bd5780637a4e367c146103dc57806387063850146103f55780638da5cb5b146104145780638e3d89cb146104275780638eec5d701461043a578063978daca71461044d578063a4e2d6341461046c578063a69df4b51461047f578063b86901af14610492578063c2b6b58c1461051c578063ceb606541461052f578063d1bdd4d314610545578063d914cd4b14610558578063e5d3b25814610577578063e5de025a14610599578063f098fe47146105b8578063f2fde38b146105cb578063f83d08ba146105ea578063fe2b699a146105fd575b600080fd5b34156101c357600080fd5b6101ce600435610613565b60405190815260200160405180910390f35b34156101eb57600080fd5b6101ce61069a565b34156101fe57600080fd5b610209600435610714565b604051600160a060020a03909116815260200160405180910390f35b341561023057600080fd5b610238610774565b005b341561024557600080fd5b610238600160a060020a036004351661080d565b341561026457600080fd5b610278600160a060020a0360043516610849565b604051901515815260200160405180910390f35b341561029757600080fd5b610278600160a060020a03600435166108b2565b34156102b657600080fd5b6102be610901565b604051808260038111156102ce57fe5b60ff16815260200191505060405180910390f35b34156102ed57600080fd5b61023861090f565b341561030057600080fd5b610238600160a060020a0360043516610960565b341561031f57600080fd5b610238600435610a1f565b341561033557600080fd5b610238600435610b97565b341561034b57600080fd5b610238610ddd565b341561035e57600080fd5b610209610e63565b341561037157600080fd5b6101ce600160a060020a0360043516602435610e72565b341561039357600080fd5b610238610f0b565b34156103a657600080fd5b6101ce600160a060020a0360043516602435610f41565b34156103c857600080fd5b610238600160a060020a0360043516610f79565b34156103e757600080fd5b610209600435602435610fbb565b341561040057600080fd5b6101ce600160a060020a0360043516611029565b341561041f57600080fd5b610209611092565b341561043257600080fd5b6102786110a1565b341561044557600080fd5b6101ce6113af565b341561045857600080fd5b6101ce600160a060020a0360043516611409565b341561047757600080fd5b610278611424565b341561048a57600080fd5b61023861142d565b341561049d57600080fd5b6104a561148a565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156104e15780820151838201526020016104c9565b50505050905090810190601f16801561050e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561052757600080fd5b610278611528565b341561053a57600080fd5b6101ce600435611547565b341561055057600080fd5b6102786115a7565b341561056357600080fd5b610238600160a060020a036004351661162e565b341561058257600080fd5b610238600160a060020a0360043516602435611717565b34156105a457600080fd5b6101ce600160a060020a036004351661197e565b34156105c357600080fd5b6102786119ef565b34156105d657600080fd5b610238600160a060020a0360043516611a08565b34156105f557600080fd5b610238611aa3565b341561060857600080fd5b610238600435611b02565b6000818152600a602052604080822073__AddressSet____________________________9163913aa6cd91908490516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b151561067a57600080fd5b6102c65a03f4151561068b57600080fd5b50505060405180519392505050565b600073__Bytes32Set____________________________63364061116007836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b15156106f457600080fd5b6102c65a03f4151561070557600080fd5b50505060405180519150505b90565b600073__AddressSet____________________________635c2125a7600484846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561067a57600080fd5b61077c611424565b15801561079e57506000600254610100900460ff16600381111561079c57fe5b145b15156107a957600080fd5b6107b2336108b2565b15156107bd57600080fd5b6107c56119ef565b15156107d057600080fd5b6002805461ff0019166101001790557fed1cd0670ee0c0017f550451a038818c696d0b6a9d6ce5b369e44275573cf9b060405160405180910390a1565b60005433600160a060020a0390811691161461082857600080fd5b600160a060020a03166000908152600160205260409020805460ff19169055565b600073__AddressSet____________________________63758241e0600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561067a57600080fd5b6000600160a060020a038216158015906108fb5750600054600160a060020a03838116911614806108fb5750600160a060020a03821660009081526001602052604090205460ff165b92915050565b600254610100900460ff1681565b610918336108b2565b151561092357600080fd5b6002805461ff0019166103001790557f72c874aeff0b183a56e2b79c71b46e1aed4dee5e09862134b8821ba2fddbf8bf60405160405180910390a1565b610968611424565b15801561098a57506000600254610100900460ff16600381111561098857fe5b145b151561099557600080fd5b61099e336108b2565b15156109a957600080fd5b73__AddressSet____________________________63e134066a60048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b1515610a0857600080fd5b6102c65a03f41515610a1957600080fd5b50505050565b610a27611424565b158015610a4957506001600254610100900460ff166003811115610a4757fe5b145b1515610a5457600080fd5b73__AddressSet____________________________63758241e060043360006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b1515610abc57600080fd5b6102c65a03f41515610acd57600080fd5b505050604051805190501515610ae257600080fd5b6000818152600d602052604090205460ff1615610afe57600080fd5b6000818152600d60209081526040808320805460ff19166001908117909155600160a060020a0333168452600e909252909120805490918101610b418382611ba1565b5060009182526020909120018190557f8da004b68c600da3aa991b5e006cb35a6909fb3a11e86cd1e36b7d97922da4a53382604051600160a060020a03909216825260208201526040908101905180910390a150565b600080610ba2611424565b158015610bc457506000600254610100900460ff166003811115610bc257fe5b145b1515610bcf57600080fd5b610bd8336108b2565b1515610be357600080fd5b73__Bytes32Set____________________________639e3084b060078560405160e060020a63ffffffff85160281526004810192909252602482015260440160006040518083038186803b1515610c3957600080fd5b6102c65a03f41515610c4a57600080fd5b505050600091505b73__AddressSet____________________________63913aa6cd600460006040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b1515610cab57600080fd5b6102c65a03f41515610cbc57600080fd5b50505060405180519050821015610dd85773__AddressSet____________________________635c2125a760048460006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610d2c57600080fd5b6102c65a03f41515610d3d57600080fd5b5050506040518051600160a060020a0381166000908152600b60205260409081902091935073__Bytes32Set____________________________9250639e3084b0919086905160e060020a63ffffffff85160281526004810192909252602482015260440160006040518083038186803b1515610db957600080fd5b6102c65a03f41515610dca57600080fd5b505060019092019150610c52565b505050565b610de5611424565b158015610e0757506001600254610100900460ff166003811115610e0557fe5b145b1515610e1257600080fd5b610e1b336108b2565b1515610e2657600080fd5b6002805461ff0019166102001790557f1cdde67b72a90f19919ac732a437ac2f7a10fc128d28c2a6e525d89ce5cd9d3a60405160405180910390a1565b600c54600160a060020a031681565b600160a060020a0382166000908152600b602052604080822073__Bytes32Set____________________________91639286e541919085908590516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610eea57600080fd5b6102c65a03f41515610efb57600080fd5b5050506040518051949350505050565b610f14336108b2565b1515610f1f57600080fd5b600160a060020a0333166000908152600160205260409020805460ff19169055565b600160a060020a0382166000908152600e60205260408120805483908110610f6557fe5b906000526020600020900154905092915050565b60005433600160a060020a03908116911614610f9457600080fd5b600160a060020a03166000908152600160208190526040909120805460ff19169091179055565b6000828152600a602052604080822073__AddressSet____________________________91635c2125a7919085908590516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b1515610eea57600080fd5b600073__AddressSet____________________________6318c40249600484846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561067a57600080fd5b600054600160a060020a031681565b60008073__AddressSet____________________________63913aa6cd6004836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b15156110fc57600080fd5b6102c65a03f4151561110d57600080fd5b50505060405180511515905061112657600091506113ab565b5060005b73__AddressSet____________________________63913aa6cd600460006040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b151561118357600080fd5b6102c65a03f4151561119457600080fd5b505050604051805190508110156113a65773__AddressSet____________________________635c2125a760048360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561120457600080fd5b6102c65a03f4151561121557600080fd5b50505060405180519050600160a060020a031663138b1fa03060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561127557600080fd5b6102c65a03f1151561128657600080fd5b50505060405180519050151561129f57600091506113ab565b600c54600160a060020a031673__AddressSet____________________________635c2125a760048460006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561130a57600080fd5b6102c65a03f4151561131b57600080fd5b50505060405180519050600160a060020a0316634b1d3ede6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561136a57600080fd5b6102c65a03f1151561137b57600080fd5b50505060405180519050600160a060020a031614151561139e57600091506113ab565b60010161112a565b600191505b5090565b600073__AddressSet____________________________63913aa6cd6004836040516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b15156106f457600080fd5b600160a060020a03166000908152600e602052604090205490565b60025460ff1690565b611436336108b2565b151561144157600080fd5b60025460ff16151561145257600080fd5b6002805460ff191690557f19aad37188a1d3921e29eb3c66acf43d81975e107cb650d58cca878627955fd660405160405180910390a1565b60038054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156115205780601f106114f557610100808354040283529160200191611520565b820191906000526020600020905b81548152906001019060200180831161150357829003601f168201915b505050505081565b600060028054610100900460ff16600381111561154157fe5b14905090565b600073__Bytes32Set____________________________639286e541600784846040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b151561067a57600080fd5b600c54600090600160a060020a0316158015906116295750600c54600160a060020a031663138b1fa03060006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561161857600080fd5b6102c65a03f1151561070557600080fd5b905090565b611636611424565b15801561165857506000600254610100900460ff16600381111561165657fe5b145b151561166357600080fd5b61166c336108b2565b151561167757600080fd5b73__AddressSet____________________________63f9802f8560048360405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156116d657600080fd5b6102c65a03f415156116e757600080fd5b505050611714817f414c4c0000000000000000000000000000000000000000000000000000000000611717565b50565b61171f611424565b15801561174157506000600254610100900460ff16600381111561173f57fe5b145b151561174c57600080fd5b611755336108b2565b151561176057600080fd5b73__Bytes32Set____________________________63932dd83960078360006040516020015260405160e060020a63ffffffff85160281526004810192909252602482015260440160206040518083038186803b15156117bf57600080fd5b6102c65a03f415156117d057600080fd5b5050506040518051905015156117e557600080fd5b73__AddressSet____________________________63758241e060048460006040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160206040518083038186803b151561184d57600080fd5b6102c65a03f4151561185e57600080fd5b50505060405180519050151561187357600080fd5b6000818152600a60205260409081902073__AddressSet____________________________9163f9802f85919085905160e060020a63ffffffff85160281526004810192909252600160a060020a0316602482015260440160006040518083038186803b15156118e257600080fd5b6102c65a03f415156118f357600080fd5b505050600160a060020a0382166000908152600b60205260409081902073__Bytes32Set____________________________9163fffd9592919084905160e060020a63ffffffff85160281526004810192909252602482015260440160006040518083038186803b151561196657600080fd5b6102c65a03f4151561197757600080fd5b5050505050565b600160a060020a0381166000908152600b602052604080822073__Bytes32Set____________________________91633640611191908490516020015260405160e060020a63ffffffff8416028152600481019190915260240160206040518083038186803b151561067a57600080fd5b60006119f96115a7565b801561162957506116296110a1565b60005433600160a060020a03908116911614611a2357600080fd5b600160a060020a0381161515611a3857600080fd5b600054600160a060020a0380831691167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b611aac336108b2565b1515611ab757600080fd5b60025460ff1615611ac757600080fd5b6002805460ff191660011790557f0f2e5b6c72c6a4491efd919a9f9a409f324ef0708c11ee57d410c2cb06c0992b60405160405180910390a1565b611b0a611424565b158015611b2c57506000600254610100900460ff166003811115611b2a57fe5b145b1515611b3757600080fd5b611b40336108b2565b1515611b4b57600080fd5b73__Bytes32Set____________________________63fffd959260078360405160e060020a63ffffffff85160281526004810192909252602482015260440160006040518083038186803b1515610a0857600080fd5b815481835581811511610dd857600083815260209020610dd891810190830161071191905b808211156113ab5760008155600101611bc65600a165627a7a72305820fa82f729e694d819b196e8d2dbff6242c400a6b4b91c3138a404da341e2dcc030029",
  "sourceMap": "1254:3942:8:-;;;1183:22:16;;;-1:-1:-1;;1326:59:15;;;1914:252:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;494:5:21;:18;;-1:-1:-1;;;;;502:10:21;494:18;;-1:-1:-1;;;;;;494:18:21;;;;;;;;;1234:26:2;;;;494:18:21;1234:26:2;;;;;;;;:33;;-1:-1:-1;;1234:33:2;;;;;;1914:252:8;;;;-1:-1:-1;2011:12:8;1914:252;1277:16:2;1914:252:8;;1277:27:2;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;2060:29:8;;;;2052:38;;;;;;2100:8;:26;;-1:-1:-1;;;;;;2100:26:8;-1:-1:-1;;;;;2100:26:8;;;;;2136:12;;:8;2149:9;2136:23;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2136:23:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1914:252;;;1254:3942;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1254:3942:8;;;-1:-1:-1;1254:3942:8;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;",
  "deployedSourceMap": "1254:3942:8:-;;;;;;;;;-1:-1:-1;;;1254:3942:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2264:123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3875:98;;;;;;;;;;;;1411:109:6;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1411:109:6;;;;;;;;;;;;;;2006:148:15;;;;;;;;;;;;;;1460:95:0;;;;;;;;;;-1:-1:-1;;;;;1460:95:0;;;;;1808:105:6;;;;;;;;;;-1:-1:-1;;;;;1808:105:6;;;;;;;;;;;;;;;;;;;;;;1212:145:0;;;;;;;;;;-1:-1:-1;;;;;1212:145:0;;;;;1326:59:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2274:103;;;;;;;;;;;;1715:87:6;;;;;;;;;;-1:-1:-1;;;;;1715:87:6;;;;;4971:223:8;;;;;;;;;;;;;;4097:245;;;;;;;;;;;;;;2160:108:15;;;;;;;;;;;;1702:23:8;;;;;;;;;;;;4574:141;;;;;;;;;;-1:-1:-1;;;;;4574:141:8;;;;;;;1561:84:0;;;;;;;;;;;;2728:123:8;;;;;;;;;;-1:-1:-1;;;;;2728:123:8;;;;;;;1363:91:0;;;;;;;;;;-1:-1:-1;;;;;1363:91:0;;;;;2393:142:8;;;;;;;;;;;;;;;;1296:109:6;;;;;;;;;;-1:-1:-1;;;;;1296:109:6;;;;;238:20:21;;;;;;;;;;;;3170:584:8;;;;;;;;;;;;1526:96:6;;;;;;;;;;;;2541:121:8;;;;;;;;;;-1:-1:-1;;;;;2541:121:8;;;;;1355:84:16;;;;;;;;;;;;1540:92;;;;;;;;;;;;1089:30:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:2;8:100;;;99:1;94:3;90;84:5;71:3;;;64:6;52:2;45:3;8:100;;;12:14;3:109;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1720:112:15;;;;;;;;;;;;3979::8;;;;;;;;;;;;;;3015:149;;;;;;;;;;;;2890:119;;;;;;;;;;-1:-1:-1;;;;;2890:119:8;;;;;4721:244;;;;;;;;;;-1:-1:-1;;;;;4721:244:8;;;;;;;4445:123;;;;;;;;;;-1:-1:-1;;;;;4445:123:8;;;;;3760:109;;;;;;;;;;;;827:169:21;;;;;;;;;;-1:-1:-1;;;;;827:169:21;;;;;1445:89:16;;;;;;;;;;;;4348:91:8;;;;;;;;;;;;;;2264:123;2328:7;2354:19;;;:12;:19;;;;;;:24;;;;:19;2328:7;;2354:26;;;;;;-1:-1:-1;;;2354:26:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2264:123;-1:-1:-1;;;2264:123:8:o;3875:98::-;3925:7;3951:13;;:8;3925:7;3951:15;;;;;;;-1:-1:-1;;;3951:15:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;3875:98:8;;:::o;1411:109:6:-;1467:7;1493:13;;:7;1507:5;1467:7;1493:20;;;;;;;-1:-1:-1;;;1493:20:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2006:148:15;1529:10;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;:39;;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;2066:13:15;:11;:13::i;:::-;2058:22;;;;;;;;2090:13;:36;;-1:-1:-1;;2090:36:15;;;;;2136:11;;;;;;;;;;2006:148::o;1460:95:0:-;647:5:21;;633:10;-1:-1:-1;;;;;633:19:21;;;647:5;;633:19;625:28;;;;;;-1:-1:-1;;;;;1522:18:0;1543:5;1522:18;;;:12;:18;;;;;:26;;-1:-1:-1;;1522:26:0;;;1460:95::o;1808:105:6:-;1864:4;1887:16;;:7;1904:1;1864:4;1887:19;;;;;;;-1:-1:-1;;;1887:19:6;;;;;;;;;;;;;-1:-1:-1;;;;;1887:19:6;;;;;;;;;;;;;;;;;;;;;;;;1212:145:0;1268:4;-1:-1:-1;;;;;1291:18:0;;;;;;:59;;-1:-1:-1;1322:5:0;;-1:-1:-1;;;;;1314:13:0;;;1322:5;;1314:13;;:35;;-1:-1:-1;;;;;;1331:18:0;;;;;;:12;:18;;;;;;;;1314:35;1284:66;1212:145;-1:-1:-1;;1212:145:0:o;1326:59:15:-;;;;;;;;;:::o;2274:103::-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;2314:13:15;:37;;-1:-1:-1;;2314:37:15;;;;;2361:9;;;;;;;;;;2274:103::o;1715:87:6:-;1529:10:15;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;:39;;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1778:14:6;;:7;1793:1;1778:17;;-1:-1:-1;;;1778:17:6;;;;;;;;;;;;;-1:-1:-1;;;;;1778:17:6;;;;;;;-1:-1:-1;1778:17:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1715:87;:::o;4971:223:8:-;1644:10:15;:8;:10::i;:::-;1643:11;:52;;;;-1:-1:-1;1675:20:15;1658:13;;;;;;;:37;;;;;;;;;1643:52;1635:61;;;;;;;;2211:16:8;;:7;2228:10;2211:28;;;;;;;;-1:-1:-1;;;2211:28:8;;;;;;;;;;;;;-1:-1:-1;;;;;2211:28:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2203:37;;;;;;;;5048:18;;;;:10;:18;;;;;;;;5047:19;5039:28;;;;;;5077:18;;;;:10;:18;;;;;;;;:25;;-1:-1:-1;;5077:25:8;5098:4;5077:25;;;;;;-1:-1:-1;;;;;5123:10:8;5112:22;;;:10;:22;;;;;;:35;;:22;;:35;;;:22;:35;;:::i;:::-;-1:-1:-1;5112:35:8;;;;;;;;;;;;5157:30;5168:10;5140:6;5157:30;;-1:-1:-1;;;;;5157:30:8;;;;;;;;;;;;;;;;;;;;4971:223;:::o;4097:245::-;4202:9;4254;1529:10:15;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;:39;;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;4165:15:8;;:8;4181:5;4165:22;;-1:-1:-1;;;4165:22:8;;;;;;;;;;;;;;;;;;;-1:-1:-1;4165:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4214:1;4202:13;;4197:139;4219:12;;:7;:14;;;;;;;;-1:-1:-1;;;4219:14:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4217:1;:16;4197:139;;;4266:13;;:7;4280:1;4266:16;;;;;;;;-1:-1:-1;;;4266:16:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4296:15:8;;;;;;:12;:15;;;;;;;4266:16;;-1:-1:-1;4296:22:8;;-1:-1:-1;4296:22:8;;:15;4319:5;;4296:29;-1:-1:-1;;;4296:29:8;;;;;;;;;;;;;;;;;;;-1:-1:-1;4296:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4235:3:8;;;;;-1:-1:-1;4197:139:8;;;4097:245;;;:::o;2160:108:15:-;1644:10;:8;:10::i;:::-;1643:11;:52;;;;-1:-1:-1;1675:20:15;1658:13;;;;;;;:37;;;;;;;;;1643:52;1635:61;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;2223:20:15;2207:36;;-1:-1:-1;;2207:36:15;;;;;2253:8;;;;;;;;;;2160:108::o;1702:23:8:-;;;-1:-1:-1;;;;;1702:23:8;;:::o;4574:141::-;-1:-1:-1;;;;;4677:18:8;;4651:7;4677:18;;;:12;:18;;;;;;:24;;;;:18;4702:5;;4651:7;;4677:31;;;;;;-1:-1:-1;;;4677:31:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4574:141;-1:-1:-1;;;;4574:141:8:o;1561:84:0:-;1168:19;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;-1:-1:-1;;;;;1619:10:0;1606:24;1633:5;1606:24;;;:12;:24;;;;;:32;;-1:-1:-1;;1606:32:0;;;1561:84::o;2728:123:8:-;-1:-1:-1;;;;;2825:16:8;;2799:7;2825:16;;;:10;:16;;;;;:19;;2842:1;;2825:19;;;;;;;;;;;;;;;2818:26;;2728:123;;;;:::o;1363:91:0:-;647:5:21;;633:10;-1:-1:-1;;;;;633:19:21;;;647:5;;633:19;625:28;;;;;;-1:-1:-1;;;;;1422:18:0;;;;;1443:4;1422:18;;;;;;;;:25;;-1:-1:-1;;1422:25:0;;;;;;1363:91::o;2393:142:8:-;2470:7;2496:19;;;:12;:19;;;;;;:25;;;;:19;2522:5;;2470:7;;2496:32;;;;;;-1:-1:-1;;;2496:32:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1296:109:6;1354:7;1380:15;;:7;1396:1;1354:7;1380:18;;;;;;;-1:-1:-1;;;1380:18:6;;;;;;;;;;;;;-1:-1:-1;;;;;1380:18:6;;;;;;;;;;;;;;;;;;;;;;;;238:20:21;;;-1:-1:-1;;;;;238:20:21;;:::o;3170:584:8:-;3217:4;;3284:12;;:7;3217:4;3284:14;;;;;;;-1:-1:-1;;;3284:14:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:19;3280:62;;-1:-1:-1;3280:62:8;;3326:5;3319:12;;;;3280:62;-1:-1:-1;3368:1:8;3351:376;3373:12;;:7;:14;;;;;;;;-1:-1:-1;;;3373:14:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3371:1;:16;3351:376;;;3471:13;;:7;3485:1;3471:16;;;;;;;;-1:-1:-1;;;3471:16:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3460:41:8;;3502:4;3460:47;;;;;;;;-1:-1:-1;;;3460:47:8;;;;;;-1:-1:-1;;;;;3460:47:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3459:48;3455:99;;;3534:5;3527:12;;;;3455:99;3662:8;;-1:-1:-1;;;;;3662:8:8;3630:13;;:7;3644:1;3662:8;3630:16;;;;;;;-1:-1:-1;;;3630:16:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3619:37:8;;:39;;;;;;;;;;;-1:-1:-1;;;3619:39:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3619:51:8;;;3615:102;;;3697:5;3690:12;;;;3615:102;3389:3;;3351:376;;;3743:4;3736:11;;3170:584;;;:::o;1526:96:6:-;1575:7;1601:12;;:7;1575;1601:14;;;;;;;-1:-1:-1;;;1601:14:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2541:121:8;-1:-1:-1;;;;;2632:16:8;2606:7;2632:16;;;:10;:16;;;;;:23;;2541:121::o;1355:84:16:-;1423:9;;;;1355:84;:::o;1540:92::-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1248:9:16;;;;1240:18;;;;;;;;1588:9;:17;;-1:-1:-1;;1588:17:16;;;1615:10;;;;;;;;;;1540:92::o;1089:30:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1720:112:15:-;1765:4;1805:20;1788:13;;;;;;;:37;;;;;;;;;1781:44;;1720:112;:::o;3979::8:-;4037:7;4063:14;;:8;4078:5;4037:7;4063:21;;;;;;;-1:-1:-1;;;4063:21:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3015:149;3088:8;;3065:4;;-1:-1:-1;;;;;3088:8:8;:22;;;;:69;;-1:-1:-1;3129:8:8;;-1:-1:-1;;;;;3129:8:8;3114:37;3152:4;3129:8;3114:43;;;;;;;-1:-1:-1;;;3114:43:8;;;;;;-1:-1:-1;;;;;3114:43:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3088:69;3081:76;;3015:149;:::o;2890:119::-;1529:10:15;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;:39;;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;2950:11:8;;:7;2962:1;2950:14;;-1:-1:-1;;;2950:14:8;;;;;;;;;;;;;-1:-1:-1;;;;;2950:14:8;;;;;;;-1:-1:-1;2950:14:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2974:28;2989:1;2992:9;2974:14;:28::i;:::-;2890:119;:::o;4721:244::-;1529:10:15;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;:39;;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;4814:17:8;;:8;4832:5;4814:24;;;;;;;;-1:-1:-1;;;4814:24:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4806:33;;;;;;;;4857:16;;:7;4874:4;4857:22;;;;;;;;-1:-1:-1;;;4857:22:8;;;;;;;;;;;;;-1:-1:-1;;;;;4857:22:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4849:31;;;;;;;;4890:19;;;;:12;:19;;;;;;;:23;;;;:19;4914:4;;4890:29;-1:-1:-1;;;4890:29:8;;;;;;;;;;;;;-1:-1:-1;;;;;4890:29:8;;;;;;;-1:-1:-1;4890:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;;4929:18:8;;;;;;:12;:18;;;;;;;:22;;;;:18;4952:5;;4929:29;-1:-1:-1;;;4929:29:8;;;;;;;;;;;;;;;;;;;-1:-1:-1;4929:29:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4721:244;;:::o;4445:123::-;-1:-1:-1;;;;;4536:18:8;;4510:7;4536:18;;;:12;:18;;;;;;:23;;;;:18;4510:7;;4536:25;;;;;;-1:-1:-1;;;4536:25:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3760:109;3808:4;3831:15;:13;:15::i;:::-;:31;;;;;3850:12;:10;:12::i;827:169:21:-;647:5;;633:10;-1:-1:-1;;;;;633:19:21;;;647:5;;633:19;625:28;;;;;;-1:-1:-1;;;;;903:22:21;;;;895:31;;;;;;953:5;;-1:-1:-1;;;;;932:37:21;;;;953:5;932:37;;;;;;;;;;975:5;:16;;-1:-1:-1;;975:16:21;-1:-1:-1;;;;;975:16:21;;;;;;;;;;827:169::o;1445:89:16:-;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;1321:9:16;;;;1320:10;1312:19;;;;;;1493:9;:16;;-1:-1:-1;;1493:16:16;1505:4;1493:16;;;1519:8;;;;;;;;;;1445:89::o;4348:91:8:-;1529:10:15;:8;:10::i;:::-;1528:11;:54;;;;-1:-1:-1;1560:22:15;1543:13;;;;;;;:39;;;;;;;;;1528:54;1520:63;;;;;;;;1168:19:0;1176:10;1168:7;:19::i;:::-;1160:28;;;;;;;;4413:12:8;;:8;4426:5;4413:19;;-1:-1:-1;;;4413:19:8;;;;;;;;;;;;;;;;;;;-1:-1:-1;4413:19:8;;;;;;;;;;;;;;;;1254:3942;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;",
  "source": "// ------------------------------------------------------------------------------\n// This file is part of netvote.\n//\n// netvote is free software: you can redistribute it and/or modify\n// it under the terms of the GNU General Public License as published by\n// the Free Software Foundation, either version 3 of the License, or\n// (at your option) any later version.\n//\n// netvote is distributed in the hope that it will be useful,\n// but WITHOUT ANY WARRANTY; without even the implied warranty of\n// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\n// GNU General Public License for more details.\n//\n// You should have received a copy of the GNU General Public License\n// along with solidity.  If not, see <http://www.gnu.org/licenses/>\n//\n// (c) 2017 netvote contributors.\n//------------------------------------------------------------------------------\n\npragma solidity ^0.4.17;\n\nimport \"../../lib/Bytes32Set.sol\";\nimport \"../links/PoolRegistry.sol\";\nimport \"./TieredElection.sol\";\nimport \"./TieredPool.sol\";\nimport \"../BaseBallot.sol\";\n\n\n/**\n * @title TieredBallot\n * @dev A tiered ballot represents one instance of a ballot in a tiered eleciton.\n * This allows one to partition pools into groups for the purposes of separating votes.\n */\ncontract TieredBallot is BaseBallot, PoolRegistry {\n    using Bytes32Set for Bytes32Set.SetData;\n\n    // events for subscribing to this ballot\n    event BallotVote(address pool, bytes32 voteId);\n\n    // default group (popular vote)\n    bytes32 constant GROUP_ALL = \"ALL\";\n\n    // configuration\n    Bytes32Set.SetData groupSet;\n    mapping (bytes32 => AddressSet.SetData) groupPoolSet;\n    mapping (address => Bytes32Set.SetData) poolGroupSet;\n\n    address public election;\n\n    // state\n    // map of voters to prevent duplicates\n    mapping (bytes32 => bool) voterVoted;\n\n    // pools to the list of voters\n    mapping (address => bytes32[]) poolVoters;\n\n    function TieredBallot(address electionAddress, address ownerAddress, string location) BaseBallot(ownerAddress, location) public {\n        require(electionAddress != address(0));\n        election = electionAddress;\n        groupSet.put(GROUP_ALL);\n    }\n\n    modifier validPool() {\n        require(poolSet.contains(msg.sender));\n        _;\n    }\n\n    function groupPoolCount(bytes32 group) constant public returns (uint256) {\n        return groupPoolSet[group].size();\n    }\n\n    function getGroupPool(bytes32 group, uint256 index) constant public returns (address) {\n        return groupPoolSet[group].getAt(index);\n    }\n\n    function getPoolVoterCount(address pool) constant public returns(uint256) {\n        return poolVoters[pool].length;\n    }\n\n    // gets voter address by pool and index (for iteration)\n    function getPoolVoter(address pool, uint256 i) constant public returns(bytes32) {\n        return poolVoters[pool][i];\n    }\n\n    // adds a pool to the ballot\n    function addPool(address p) public building admin {\n        poolSet.put(p);\n        addPoolToGroup(p, GROUP_ALL);\n    }\n\n    function checkElection() public constant returns (bool) {\n        return election != address(0) && TieredElection(election).ballotExists(this);\n    }\n\n    function checkPools() public constant returns (bool) {\n        // there must be at least one pool set\n        if (poolSet.size() == 0) {\n            return false;\n        }\n        for (uint256 i = 0; i<poolSet.size(); i++) {\n            // pool must reference this ballot\n            if (!TieredPool(poolSet.getAt(i)).ballotExists(this)) {\n                return false;\n            }\n            // pool must point to same election\n            if (TieredPool(poolSet.getAt(i)).election() != election) {\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function checkConfig() public constant returns (bool) {\n        return checkElection() && checkPools();\n    }\n\n    function getGroupCount() constant public returns (uint256) {\n        return groupSet.size();\n    }\n\n    function getGroup(uint256 index) constant public returns (bytes32) {\n        return groupSet.getAt(index);\n    }\n\n    function removeGroup(bytes32 group) public building admin {\n        groupSet.remove(group);\n        for (uint256 i = 0; i<poolSet.size(); i++) {\n            address p = poolSet.getAt(i);\n            poolGroupSet[p].remove(group);\n        }\n    }\n\n    function addGroup(bytes32 group) public building admin {\n        groupSet.put(group);\n    }\n\n    function getPoolGroupCount(address pool) constant public returns(uint256) {\n        return poolGroupSet[pool].size();\n    }\n\n    function getPoolGroupAt(address pool, uint256 index) constant public returns(bytes32) {\n        return poolGroupSet[pool].getAt(index);\n    }\n\n    function addPoolToGroup(address pool, bytes32 group) public building admin {\n        require(groupSet.contains(group));\n        require(poolSet.contains(pool));\n        groupPoolSet[group].put(pool);\n        poolGroupSet[pool].put(group);\n    }\n\n    function castVote(bytes32 voteId) public voting validPool {\n        require(!voterVoted[voteId]);\n        voterVoted[voteId] = true;\n        poolVoters[msg.sender].push(voteId);\n        BallotVote(msg.sender, voteId);\n    }\n}",
  "sourcePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/tiered/TieredBallot.sol",
  "ast": {
    "attributes": {
      "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/tiered/TieredBallot.sol",
      "exportedSymbols": {
        "TieredBallot": [
          1258
        ]
      }
    },
    "children": [
      {
        "attributes": {
          "literals": [
            "solidity",
            "^",
            "0.4",
            ".17"
          ]
        },
        "id": 809,
        "name": "PragmaDirective",
        "src": "868:24:8"
      },
      {
        "attributes": {
          "SourceUnit": 1925,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/lib/Bytes32Set.sol",
          "file": "../../lib/Bytes32Set.sol",
          "scope": 1259,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 810,
        "name": "ImportDirective",
        "src": "894:34:8"
      },
      {
        "attributes": {
          "SourceUnit": 801,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/links/PoolRegistry.sol",
          "file": "../links/PoolRegistry.sol",
          "scope": 1259,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 811,
        "name": "ImportDirective",
        "src": "929:35:8"
      },
      {
        "attributes": {
          "SourceUnit": 1327,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/tiered/TieredElection.sol",
          "file": "./TieredElection.sol",
          "scope": 1259,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 812,
        "name": "ImportDirective",
        "src": "965:30:8"
      },
      {
        "attributes": {
          "SourceUnit": 1481,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/tiered/TieredPool.sol",
          "file": "./TieredPool.sol",
          "scope": 1259,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 813,
        "name": "ImportDirective",
        "src": "996:26:8"
      },
      {
        "attributes": {
          "SourceUnit": 161,
          "absolutePath": "/Users/slanders/netvote/elections-solidity/contracts/elections/BaseBallot.sol",
          "file": "../BaseBallot.sol",
          "scope": 1259,
          "symbolAliases": [
            null
          ],
          "unitAlias": ""
        },
        "id": 814,
        "name": "ImportDirective",
        "src": "1023:27:8"
      },
      {
        "attributes": {
          "contractDependencies": [
            84,
            160,
            800,
            2129,
            2197,
            2703
          ],
          "contractKind": "contract",
          "documentation": "@title TieredBallot\n@dev A tiered ballot represents one instance of a ballot in a tiered eleciton.\nThis allows one to partition pools into groups for the purposes of separating votes.",
          "fullyImplemented": true,
          "linearizedBaseContracts": [
            1258,
            800,
            160,
            2129,
            2197,
            84,
            2703
          ],
          "name": "TieredBallot",
          "scope": 1259
        },
        "children": [
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "BaseBallot",
                  "referencedDeclaration": 160,
                  "type": "contract BaseBallot"
                },
                "id": 815,
                "name": "UserDefinedTypeName",
                "src": "1279:10:8"
              }
            ],
            "id": 816,
            "name": "InheritanceSpecifier",
            "src": "1279:10:8"
          },
          {
            "attributes": {
              "arguments": [
                null
              ]
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "PoolRegistry",
                  "referencedDeclaration": 800,
                  "type": "contract PoolRegistry"
                },
                "id": 817,
                "name": "UserDefinedTypeName",
                "src": "1291:12:8"
              }
            ],
            "id": 818,
            "name": "InheritanceSpecifier",
            "src": "1291:12:8"
          },
          {
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "Bytes32Set",
                  "referencedDeclaration": 1924,
                  "type": "library Bytes32Set"
                },
                "id": 819,
                "name": "UserDefinedTypeName",
                "src": "1316:10:8"
              },
              {
                "attributes": {
                  "contractScope": null,
                  "name": "Bytes32Set.SetData",
                  "referencedDeclaration": 1747,
                  "type": "struct Bytes32Set.SetData storage pointer"
                },
                "id": 820,
                "name": "UserDefinedTypeName",
                "src": "1331:18:8"
              }
            ],
            "id": 821,
            "name": "UsingForDirective",
            "src": "1310:40:8"
          },
          {
            "attributes": {
              "anonymous": false,
              "name": "BallotVote"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "pool",
                      "scope": 827,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 822,
                        "name": "ElementaryTypeName",
                        "src": "1418:7:8"
                      }
                    ],
                    "id": 823,
                    "name": "VariableDeclaration",
                    "src": "1418:12:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "indexed": false,
                      "name": "voteId",
                      "scope": 827,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 824,
                        "name": "ElementaryTypeName",
                        "src": "1432:7:8"
                      }
                    ],
                    "id": 825,
                    "name": "VariableDeclaration",
                    "src": "1432:14:8"
                  }
                ],
                "id": 826,
                "name": "ParameterList",
                "src": "1417:30:8"
              }
            ],
            "id": 827,
            "name": "EventDefinition",
            "src": "1401:47:8"
          },
          {
            "attributes": {
              "constant": true,
              "name": "GROUP_ALL",
              "scope": 1258,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "bytes32",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "name": "bytes32",
                  "type": "bytes32"
                },
                "id": 828,
                "name": "ElementaryTypeName",
                "src": "1490:7:8"
              },
              {
                "attributes": {
                  "argumentTypes": null,
                  "hexvalue": "414c4c",
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "subdenomination": null,
                  "token": "string",
                  "type": "literal_string \"ALL\"",
                  "value": "ALL"
                },
                "id": 829,
                "name": "Literal",
                "src": "1519:5:8"
              }
            ],
            "id": 830,
            "name": "VariableDeclaration",
            "src": "1490:34:8"
          },
          {
            "attributes": {
              "constant": false,
              "name": "groupSet",
              "scope": 1258,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "struct Bytes32Set.SetData storage ref",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "contractScope": null,
                  "name": "Bytes32Set.SetData",
                  "referencedDeclaration": 1747,
                  "type": "struct Bytes32Set.SetData storage pointer"
                },
                "id": 831,
                "name": "UserDefinedTypeName",
                "src": "1552:18:8"
              }
            ],
            "id": 832,
            "name": "VariableDeclaration",
            "src": "1552:27:8"
          },
          {
            "attributes": {
              "constant": false,
              "name": "groupPoolSet",
              "scope": 1258,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(bytes32 => struct AddressSet.SetData storage ref)",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(bytes32 => struct AddressSet.SetData storage ref)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 833,
                    "name": "ElementaryTypeName",
                    "src": "1594:7:8"
                  },
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "AddressSet.SetData",
                      "referencedDeclaration": 1556,
                      "type": "struct AddressSet.SetData storage pointer"
                    },
                    "id": 834,
                    "name": "UserDefinedTypeName",
                    "src": "1605:18:8"
                  }
                ],
                "id": 835,
                "name": "Mapping",
                "src": "1585:39:8"
              }
            ],
            "id": 836,
            "name": "VariableDeclaration",
            "src": "1585:52:8"
          },
          {
            "attributes": {
              "constant": false,
              "name": "poolGroupSet",
              "scope": 1258,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => struct Bytes32Set.SetData storage ref)",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => struct Bytes32Set.SetData storage ref)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 837,
                    "name": "ElementaryTypeName",
                    "src": "1652:7:8"
                  },
                  {
                    "attributes": {
                      "contractScope": null,
                      "name": "Bytes32Set.SetData",
                      "referencedDeclaration": 1747,
                      "type": "struct Bytes32Set.SetData storage pointer"
                    },
                    "id": 838,
                    "name": "UserDefinedTypeName",
                    "src": "1663:18:8"
                  }
                ],
                "id": 839,
                "name": "Mapping",
                "src": "1643:39:8"
              }
            ],
            "id": 840,
            "name": "VariableDeclaration",
            "src": "1643:52:8"
          },
          {
            "attributes": {
              "constant": false,
              "name": "election",
              "scope": 1258,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "address",
              "value": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "name": "address",
                  "type": "address"
                },
                "id": 841,
                "name": "ElementaryTypeName",
                "src": "1702:7:8"
              }
            ],
            "id": 842,
            "name": "VariableDeclaration",
            "src": "1702:23:8"
          },
          {
            "attributes": {
              "constant": false,
              "name": "voterVoted",
              "scope": 1258,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(bytes32 => bool)",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(bytes32 => bool)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "bytes32",
                      "type": "bytes32"
                    },
                    "id": 843,
                    "name": "ElementaryTypeName",
                    "src": "1797:7:8"
                  },
                  {
                    "attributes": {
                      "name": "bool",
                      "type": "bool"
                    },
                    "id": 844,
                    "name": "ElementaryTypeName",
                    "src": "1808:4:8"
                  }
                ],
                "id": 845,
                "name": "Mapping",
                "src": "1788:25:8"
              }
            ],
            "id": 846,
            "name": "VariableDeclaration",
            "src": "1788:36:8"
          },
          {
            "attributes": {
              "constant": false,
              "name": "poolVoters",
              "scope": 1258,
              "stateVariable": true,
              "storageLocation": "default",
              "type": "mapping(address => bytes32[] storage ref)",
              "value": null,
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "type": "mapping(address => bytes32[] storage ref)"
                },
                "children": [
                  {
                    "attributes": {
                      "name": "address",
                      "type": "address"
                    },
                    "id": 847,
                    "name": "ElementaryTypeName",
                    "src": "1875:7:8"
                  },
                  {
                    "attributes": {
                      "length": null,
                      "type": "bytes32[] storage pointer"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 848,
                        "name": "ElementaryTypeName",
                        "src": "1886:7:8"
                      }
                    ],
                    "id": 849,
                    "name": "ArrayTypeName",
                    "src": "1886:9:8"
                  }
                ],
                "id": 850,
                "name": "Mapping",
                "src": "1866:30:8"
              }
            ],
            "id": 851,
            "name": "VariableDeclaration",
            "src": "1866:41:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": true,
              "name": "TieredBallot",
              "payable": false,
              "scope": 1258,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "electionAddress",
                      "scope": 883,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 852,
                        "name": "ElementaryTypeName",
                        "src": "1936:7:8"
                      }
                    ],
                    "id": 853,
                    "name": "VariableDeclaration",
                    "src": "1936:23:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "ownerAddress",
                      "scope": 883,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 854,
                        "name": "ElementaryTypeName",
                        "src": "1961:7:8"
                      }
                    ],
                    "id": 855,
                    "name": "VariableDeclaration",
                    "src": "1961:20:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "location",
                      "scope": 883,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "string memory",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "string",
                          "type": "string storage pointer"
                        },
                        "id": 856,
                        "name": "ElementaryTypeName",
                        "src": "1983:6:8"
                      }
                    ],
                    "id": 857,
                    "name": "VariableDeclaration",
                    "src": "1983:15:8"
                  }
                ],
                "id": 858,
                "name": "ParameterList",
                "src": "1935:64:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 863,
                "name": "ParameterList",
                "src": "2042:0:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 160,
                      "type": "type(contract BaseBallot)",
                      "value": "BaseBallot"
                    },
                    "id": 859,
                    "name": "Identifier",
                    "src": "2000:10:8"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 855,
                      "type": "address",
                      "value": "ownerAddress"
                    },
                    "id": 860,
                    "name": "Identifier",
                    "src": "2011:12:8"
                  },
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 857,
                      "type": "string memory",
                      "value": "location"
                    },
                    "id": 861,
                    "name": "Identifier",
                    "src": "2025:8:8"
                  }
                ],
                "id": 862,
                "name": "ModifierInvocation",
                "src": "2000:34:8"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3241,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 864,
                            "name": "Identifier",
                            "src": "2052:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 853,
                                  "type": "address",
                                  "value": "electionAddress"
                                },
                                "id": 865,
                                "name": "Identifier",
                                "src": "2060:15:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 866,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "2079:7:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 867,
                                    "name": "Literal",
                                    "src": "2087:1:8"
                                  }
                                ],
                                "id": 868,
                                "name": "FunctionCall",
                                "src": "2079:10:8"
                              }
                            ],
                            "id": 869,
                            "name": "BinaryOperation",
                            "src": "2060:29:8"
                          }
                        ],
                        "id": 870,
                        "name": "FunctionCall",
                        "src": "2052:38:8"
                      }
                    ],
                    "id": 871,
                    "name": "ExpressionStatement",
                    "src": "2052:38:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "address"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 842,
                              "type": "address",
                              "value": "election"
                            },
                            "id": 872,
                            "name": "Identifier",
                            "src": "2100:8:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 853,
                              "type": "address",
                              "value": "electionAddress"
                            },
                            "id": 873,
                            "name": "Identifier",
                            "src": "2111:15:8"
                          }
                        ],
                        "id": 874,
                        "name": "Assignment",
                        "src": "2100:26:8"
                      }
                    ],
                    "id": 875,
                    "name": "ExpressionStatement",
                    "src": "2100:26:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "put",
                              "referencedDeclaration": 1847,
                              "type": "function (struct Bytes32Set.SetData storage pointer,bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 832,
                                  "type": "struct Bytes32Set.SetData storage ref",
                                  "value": "groupSet"
                                },
                                "id": 876,
                                "name": "Identifier",
                                "src": "2136:8:8"
                              }
                            ],
                            "id": 878,
                            "name": "MemberAccess",
                            "src": "2136:12:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 830,
                              "type": "bytes32",
                              "value": "GROUP_ALL"
                            },
                            "id": 879,
                            "name": "Identifier",
                            "src": "2149:9:8"
                          }
                        ],
                        "id": 880,
                        "name": "FunctionCall",
                        "src": "2136:23:8"
                      }
                    ],
                    "id": 881,
                    "name": "ExpressionStatement",
                    "src": "2136:23:8"
                  }
                ],
                "id": 882,
                "name": "Block",
                "src": "2042:124:8"
              }
            ],
            "id": 883,
            "name": "FunctionDefinition",
            "src": "1914:252:8"
          },
          {
            "attributes": {
              "name": "validPool",
              "visibility": "internal"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 884,
                "name": "ParameterList",
                "src": "2190:2:8"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3241,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 885,
                            "name": "Identifier",
                            "src": "2203:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "contains",
                                  "referencedDeclaration": 1601,
                                  "type": "function (struct AddressSet.SetData storage pointer,address) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 718,
                                      "type": "struct AddressSet.SetData storage ref",
                                      "value": "poolSet"
                                    },
                                    "id": 886,
                                    "name": "Identifier",
                                    "src": "2211:7:8"
                                  }
                                ],
                                "id": 887,
                                "name": "MemberAccess",
                                "src": "2211:16:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "sender",
                                  "referencedDeclaration": null,
                                  "type": "address"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 3238,
                                      "type": "msg",
                                      "value": "msg"
                                    },
                                    "id": 888,
                                    "name": "Identifier",
                                    "src": "2228:3:8"
                                  }
                                ],
                                "id": 889,
                                "name": "MemberAccess",
                                "src": "2228:10:8"
                              }
                            ],
                            "id": 890,
                            "name": "FunctionCall",
                            "src": "2211:28:8"
                          }
                        ],
                        "id": 891,
                        "name": "FunctionCall",
                        "src": "2203:37:8"
                      }
                    ],
                    "id": 892,
                    "name": "ExpressionStatement",
                    "src": "2203:37:8"
                  },
                  {
                    "id": 893,
                    "name": "PlaceholderStatement",
                    "src": "2250:1:8"
                  }
                ],
                "id": 894,
                "name": "Block",
                "src": "2193:65:8"
              }
            ],
            "id": 895,
            "name": "ModifierDefinition",
            "src": "2172:86:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "groupPoolCount",
              "payable": false,
              "scope": 1258,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "group",
                      "scope": 909,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 896,
                        "name": "ElementaryTypeName",
                        "src": "2288:7:8"
                      }
                    ],
                    "id": 897,
                    "name": "VariableDeclaration",
                    "src": "2288:13:8"
                  }
                ],
                "id": 898,
                "name": "ParameterList",
                "src": "2287:15:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 909,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 899,
                        "name": "ElementaryTypeName",
                        "src": "2328:7:8"
                      }
                    ],
                    "id": 900,
                    "name": "VariableDeclaration",
                    "src": "2328:7:8"
                  }
                ],
                "id": 901,
                "name": "ParameterList",
                "src": "2327:9:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 901
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "size",
                              "referencedDeclaration": 1613,
                              "type": "function (struct AddressSet.SetData storage pointer) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct AddressSet.SetData storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 836,
                                      "type": "mapping(bytes32 => struct AddressSet.SetData storage ref)",
                                      "value": "groupPoolSet"
                                    },
                                    "id": 902,
                                    "name": "Identifier",
                                    "src": "2354:12:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 897,
                                      "type": "bytes32",
                                      "value": "group"
                                    },
                                    "id": 903,
                                    "name": "Identifier",
                                    "src": "2367:5:8"
                                  }
                                ],
                                "id": 904,
                                "name": "IndexAccess",
                                "src": "2354:19:8"
                              }
                            ],
                            "id": 905,
                            "name": "MemberAccess",
                            "src": "2354:24:8"
                          }
                        ],
                        "id": 906,
                        "name": "FunctionCall",
                        "src": "2354:26:8"
                      }
                    ],
                    "id": 907,
                    "name": "Return",
                    "src": "2347:33:8"
                  }
                ],
                "id": 908,
                "name": "Block",
                "src": "2337:50:8"
              }
            ],
            "id": 909,
            "name": "FunctionDefinition",
            "src": "2264:123:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getGroupPool",
              "payable": false,
              "scope": 1258,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "group",
                      "scope": 926,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 910,
                        "name": "ElementaryTypeName",
                        "src": "2415:7:8"
                      }
                    ],
                    "id": 911,
                    "name": "VariableDeclaration",
                    "src": "2415:13:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "index",
                      "scope": 926,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 912,
                        "name": "ElementaryTypeName",
                        "src": "2430:7:8"
                      }
                    ],
                    "id": 913,
                    "name": "VariableDeclaration",
                    "src": "2430:13:8"
                  }
                ],
                "id": 914,
                "name": "ParameterList",
                "src": "2414:30:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 926,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 915,
                        "name": "ElementaryTypeName",
                        "src": "2470:7:8"
                      }
                    ],
                    "id": 916,
                    "name": "VariableDeclaration",
                    "src": "2470:7:8"
                  }
                ],
                "id": 917,
                "name": "ParameterList",
                "src": "2469:9:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 917
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "address",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "getAt",
                              "referencedDeclaration": 1586,
                              "type": "function (struct AddressSet.SetData storage pointer,uint256) view returns (address)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct AddressSet.SetData storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 836,
                                      "type": "mapping(bytes32 => struct AddressSet.SetData storage ref)",
                                      "value": "groupPoolSet"
                                    },
                                    "id": 918,
                                    "name": "Identifier",
                                    "src": "2496:12:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 911,
                                      "type": "bytes32",
                                      "value": "group"
                                    },
                                    "id": 919,
                                    "name": "Identifier",
                                    "src": "2509:5:8"
                                  }
                                ],
                                "id": 920,
                                "name": "IndexAccess",
                                "src": "2496:19:8"
                              }
                            ],
                            "id": 921,
                            "name": "MemberAccess",
                            "src": "2496:25:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 913,
                              "type": "uint256",
                              "value": "index"
                            },
                            "id": 922,
                            "name": "Identifier",
                            "src": "2522:5:8"
                          }
                        ],
                        "id": 923,
                        "name": "FunctionCall",
                        "src": "2496:32:8"
                      }
                    ],
                    "id": 924,
                    "name": "Return",
                    "src": "2489:39:8"
                  }
                ],
                "id": 925,
                "name": "Block",
                "src": "2479:56:8"
              }
            ],
            "id": 926,
            "name": "FunctionDefinition",
            "src": "2393:142:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getPoolVoterCount",
              "payable": false,
              "scope": 1258,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "pool",
                      "scope": 939,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 927,
                        "name": "ElementaryTypeName",
                        "src": "2568:7:8"
                      }
                    ],
                    "id": 928,
                    "name": "VariableDeclaration",
                    "src": "2568:12:8"
                  }
                ],
                "id": 929,
                "name": "ParameterList",
                "src": "2567:14:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 939,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 930,
                        "name": "ElementaryTypeName",
                        "src": "2606:7:8"
                      }
                    ],
                    "id": 931,
                    "name": "VariableDeclaration",
                    "src": "2606:7:8"
                  }
                ],
                "id": 932,
                "name": "ParameterList",
                "src": "2605:9:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 932
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "member_name": "length",
                          "referencedDeclaration": null,
                          "type": "uint256"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bytes32[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 851,
                                  "type": "mapping(address => bytes32[] storage ref)",
                                  "value": "poolVoters"
                                },
                                "id": 933,
                                "name": "Identifier",
                                "src": "2632:10:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 928,
                                  "type": "address",
                                  "value": "pool"
                                },
                                "id": 934,
                                "name": "Identifier",
                                "src": "2643:4:8"
                              }
                            ],
                            "id": 935,
                            "name": "IndexAccess",
                            "src": "2632:16:8"
                          }
                        ],
                        "id": 936,
                        "name": "MemberAccess",
                        "src": "2632:23:8"
                      }
                    ],
                    "id": 937,
                    "name": "Return",
                    "src": "2625:30:8"
                  }
                ],
                "id": 938,
                "name": "Block",
                "src": "2615:47:8"
              }
            ],
            "id": 939,
            "name": "FunctionDefinition",
            "src": "2541:121:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getPoolVoter",
              "payable": false,
              "scope": 1258,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "pool",
                      "scope": 955,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 940,
                        "name": "ElementaryTypeName",
                        "src": "2750:7:8"
                      }
                    ],
                    "id": 941,
                    "name": "VariableDeclaration",
                    "src": "2750:12:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "i",
                      "scope": 955,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 942,
                        "name": "ElementaryTypeName",
                        "src": "2764:7:8"
                      }
                    ],
                    "id": 943,
                    "name": "VariableDeclaration",
                    "src": "2764:9:8"
                  }
                ],
                "id": 944,
                "name": "ParameterList",
                "src": "2749:25:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 955,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 945,
                        "name": "ElementaryTypeName",
                        "src": "2799:7:8"
                      }
                    ],
                    "id": 946,
                    "name": "VariableDeclaration",
                    "src": "2799:7:8"
                  }
                ],
                "id": 947,
                "name": "ParameterList",
                "src": "2798:9:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 947
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "type": "bytes32"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "type": "bytes32[] storage ref"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 851,
                                  "type": "mapping(address => bytes32[] storage ref)",
                                  "value": "poolVoters"
                                },
                                "id": 948,
                                "name": "Identifier",
                                "src": "2825:10:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 941,
                                  "type": "address",
                                  "value": "pool"
                                },
                                "id": 949,
                                "name": "Identifier",
                                "src": "2836:4:8"
                              }
                            ],
                            "id": 950,
                            "name": "IndexAccess",
                            "src": "2825:16:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 943,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 951,
                            "name": "Identifier",
                            "src": "2842:1:8"
                          }
                        ],
                        "id": 952,
                        "name": "IndexAccess",
                        "src": "2825:19:8"
                      }
                    ],
                    "id": 953,
                    "name": "Return",
                    "src": "2818:26:8"
                  }
                ],
                "id": 954,
                "name": "Block",
                "src": "2808:43:8"
              }
            ],
            "id": 955,
            "name": "FunctionDefinition",
            "src": "2728:123:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "addPool",
              "payable": false,
              "scope": 1258,
              "stateMutability": "nonpayable",
              "superFunction": 770,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "p",
                      "scope": 976,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 956,
                        "name": "ElementaryTypeName",
                        "src": "2907:7:8"
                      }
                    ],
                    "id": 957,
                    "name": "VariableDeclaration",
                    "src": "2907:9:8"
                  }
                ],
                "id": 958,
                "name": "ParameterList",
                "src": "2906:11:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 963,
                "name": "ParameterList",
                "src": "2940:0:8"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2043,
                      "type": "modifier ()",
                      "value": "building"
                    },
                    "id": 959,
                    "name": "Identifier",
                    "src": "2925:8:8"
                  }
                ],
                "id": 960,
                "name": "ModifierInvocation",
                "src": "2925:8:8"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 19,
                      "type": "modifier ()",
                      "value": "admin"
                    },
                    "id": 961,
                    "name": "Identifier",
                    "src": "2934:5:8"
                  }
                ],
                "id": 962,
                "name": "ModifierInvocation",
                "src": "2934:5:8"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "put",
                              "referencedDeclaration": 1656,
                              "type": "function (struct AddressSet.SetData storage pointer,address)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 718,
                                  "type": "struct AddressSet.SetData storage ref",
                                  "value": "poolSet"
                                },
                                "id": 964,
                                "name": "Identifier",
                                "src": "2950:7:8"
                              }
                            ],
                            "id": 966,
                            "name": "MemberAccess",
                            "src": "2950:11:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 957,
                              "type": "address",
                              "value": "p"
                            },
                            "id": 967,
                            "name": "Identifier",
                            "src": "2962:1:8"
                          }
                        ],
                        "id": 968,
                        "name": "FunctionCall",
                        "src": "2950:14:8"
                      }
                    ],
                    "id": 969,
                    "name": "ExpressionStatement",
                    "src": "2950:14:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1220,
                              "type": "function (address,bytes32)",
                              "value": "addPoolToGroup"
                            },
                            "id": 970,
                            "name": "Identifier",
                            "src": "2974:14:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 957,
                              "type": "address",
                              "value": "p"
                            },
                            "id": 971,
                            "name": "Identifier",
                            "src": "2989:1:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 830,
                              "type": "bytes32",
                              "value": "GROUP_ALL"
                            },
                            "id": 972,
                            "name": "Identifier",
                            "src": "2992:9:8"
                          }
                        ],
                        "id": 973,
                        "name": "FunctionCall",
                        "src": "2974:28:8"
                      }
                    ],
                    "id": 974,
                    "name": "ExpressionStatement",
                    "src": "2974:28:8"
                  }
                ],
                "id": 975,
                "name": "Block",
                "src": "2940:69:8"
              }
            ],
            "id": 976,
            "name": "FunctionDefinition",
            "src": "2890:119:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "checkElection",
              "payable": false,
              "scope": 1258,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 977,
                "name": "ParameterList",
                "src": "3037:2:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 995,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 978,
                        "name": "ElementaryTypeName",
                        "src": "3065:4:8"
                      }
                    ],
                    "id": 979,
                    "name": "VariableDeclaration",
                    "src": "3065:4:8"
                  }
                ],
                "id": 980,
                "name": "ParameterList",
                "src": "3064:6:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 980
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!=",
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 842,
                                  "type": "address",
                                  "value": "election"
                                },
                                "id": 981,
                                "name": "Identifier",
                                "src": "3088:8:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": true
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_0_by_1",
                                          "typeString": "int_const 0"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "type": "type(address)",
                                      "value": "address"
                                    },
                                    "id": 982,
                                    "name": "ElementaryTypeNameExpression",
                                    "src": "3100:7:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "hexvalue": "30",
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "subdenomination": null,
                                      "token": "number",
                                      "type": "int_const 0",
                                      "value": "0"
                                    },
                                    "id": 983,
                                    "name": "Literal",
                                    "src": "3108:1:8"
                                  }
                                ],
                                "id": 984,
                                "name": "FunctionCall",
                                "src": "3100:10:8"
                              }
                            ],
                            "id": 985,
                            "name": "BinaryOperation",
                            "src": "3088:22:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_TieredBallot_$1258",
                                      "typeString": "contract TieredBallot"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "ballotExists",
                                  "referencedDeclaration": 706,
                                  "type": "function (address) view external returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "contract TieredElection",
                                      "type_conversion": true
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 1326,
                                          "type": "type(contract TieredElection)",
                                          "value": "TieredElection"
                                        },
                                        "id": 986,
                                        "name": "Identifier",
                                        "src": "3114:14:8"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 842,
                                          "type": "address",
                                          "value": "election"
                                        },
                                        "id": 987,
                                        "name": "Identifier",
                                        "src": "3129:8:8"
                                      }
                                    ],
                                    "id": 988,
                                    "name": "FunctionCall",
                                    "src": "3114:24:8"
                                  }
                                ],
                                "id": 989,
                                "name": "MemberAccess",
                                "src": "3114:37:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3303,
                                  "type": "contract TieredBallot",
                                  "value": "this"
                                },
                                "id": 990,
                                "name": "Identifier",
                                "src": "3152:4:8"
                              }
                            ],
                            "id": 991,
                            "name": "FunctionCall",
                            "src": "3114:43:8"
                          }
                        ],
                        "id": 992,
                        "name": "BinaryOperation",
                        "src": "3088:69:8"
                      }
                    ],
                    "id": 993,
                    "name": "Return",
                    "src": "3081:76:8"
                  }
                ],
                "id": 994,
                "name": "Block",
                "src": "3071:93:8"
              }
            ],
            "id": 995,
            "name": "FunctionDefinition",
            "src": "3015:149:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "checkPools",
              "payable": false,
              "scope": 1258,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 996,
                "name": "ParameterList",
                "src": "3189:2:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1054,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 997,
                        "name": "ElementaryTypeName",
                        "src": "3217:4:8"
                      }
                    ],
                    "id": 998,
                    "name": "VariableDeclaration",
                    "src": "3217:4:8"
                  }
                ],
                "id": 999,
                "name": "ParameterList",
                "src": "3216:6:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "falseBody": null
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "==",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "size",
                                  "referencedDeclaration": 1613,
                                  "type": "function (struct AddressSet.SetData storage pointer) view returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 718,
                                      "type": "struct AddressSet.SetData storage ref",
                                      "value": "poolSet"
                                    },
                                    "id": 1000,
                                    "name": "Identifier",
                                    "src": "3284:7:8"
                                  }
                                ],
                                "id": 1001,
                                "name": "MemberAccess",
                                "src": "3284:12:8"
                              }
                            ],
                            "id": 1002,
                            "name": "FunctionCall",
                            "src": "3284:14:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1003,
                            "name": "Literal",
                            "src": "3302:1:8"
                          }
                        ],
                        "id": 1004,
                        "name": "BinaryOperation",
                        "src": "3284:19:8"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "functionReturnParameters": 999
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "hexvalue": "66616c7365",
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "subdenomination": null,
                                  "token": "bool",
                                  "type": "bool",
                                  "value": "false"
                                },
                                "id": 1005,
                                "name": "Literal",
                                "src": "3326:5:8"
                              }
                            ],
                            "id": 1006,
                            "name": "Return",
                            "src": "3319:12:8"
                          }
                        ],
                        "id": 1007,
                        "name": "Block",
                        "src": "3305:37:8"
                      }
                    ],
                    "id": 1008,
                    "name": "IfStatement",
                    "src": "3280:62:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            1010
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "name": "i",
                              "scope": 1054,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 1009,
                                "name": "ElementaryTypeName",
                                "src": "3356:7:8"
                              }
                            ],
                            "id": 1010,
                            "name": "VariableDeclaration",
                            "src": "3356:9:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1011,
                            "name": "Literal",
                            "src": "3368:1:8"
                          }
                        ],
                        "id": 1012,
                        "name": "VariableDeclarationStatement",
                        "src": "3356:13:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1010,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 1013,
                            "name": "Identifier",
                            "src": "3371:1:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "size",
                                  "referencedDeclaration": 1613,
                                  "type": "function (struct AddressSet.SetData storage pointer) view returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 718,
                                      "type": "struct AddressSet.SetData storage ref",
                                      "value": "poolSet"
                                    },
                                    "id": 1014,
                                    "name": "Identifier",
                                    "src": "3373:7:8"
                                  }
                                ],
                                "id": 1015,
                                "name": "MemberAccess",
                                "src": "3373:12:8"
                              }
                            ],
                            "id": 1016,
                            "name": "FunctionCall",
                            "src": "3373:14:8"
                          }
                        ],
                        "id": 1017,
                        "name": "BinaryOperation",
                        "src": "3371:16:8"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1010,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 1018,
                                "name": "Identifier",
                                "src": "3389:1:8"
                              }
                            ],
                            "id": 1019,
                            "name": "UnaryOperation",
                            "src": "3389:3:8"
                          }
                        ],
                        "id": 1020,
                        "name": "ExpressionStatement",
                        "src": "3389:3:8"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "!",
                                  "prefix": true,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "bool",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_contract$_TieredBallot_$1258",
                                              "typeString": "contract TieredBallot"
                                            }
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "ballotExists",
                                          "referencedDeclaration": 706,
                                          "type": "function (address) view external returns (bool)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "contract TieredPool",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1480,
                                                  "type": "type(contract TieredPool)",
                                                  "value": "TieredPool"
                                                },
                                                "id": 1021,
                                                "name": "Identifier",
                                                "src": "3460:10:8"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "address",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "getAt",
                                                      "referencedDeclaration": 1586,
                                                      "type": "function (struct AddressSet.SetData storage pointer,uint256) view returns (address)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 718,
                                                          "type": "struct AddressSet.SetData storage ref",
                                                          "value": "poolSet"
                                                        },
                                                        "id": 1022,
                                                        "name": "Identifier",
                                                        "src": "3471:7:8"
                                                      }
                                                    ],
                                                    "id": 1023,
                                                    "name": "MemberAccess",
                                                    "src": "3471:13:8"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1010,
                                                      "type": "uint256",
                                                      "value": "i"
                                                    },
                                                    "id": 1024,
                                                    "name": "Identifier",
                                                    "src": "3485:1:8"
                                                  }
                                                ],
                                                "id": 1025,
                                                "name": "FunctionCall",
                                                "src": "3471:16:8"
                                              }
                                            ],
                                            "id": 1026,
                                            "name": "FunctionCall",
                                            "src": "3460:28:8"
                                          }
                                        ],
                                        "id": 1027,
                                        "name": "MemberAccess",
                                        "src": "3460:41:8"
                                      },
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3303,
                                          "type": "contract TieredBallot",
                                          "value": "this"
                                        },
                                        "id": 1028,
                                        "name": "Identifier",
                                        "src": "3502:4:8"
                                      }
                                    ],
                                    "id": 1029,
                                    "name": "FunctionCall",
                                    "src": "3460:47:8"
                                  }
                                ],
                                "id": 1030,
                                "name": "UnaryOperation",
                                "src": "3459:48:8"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 999
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "66616c7365",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "false"
                                        },
                                        "id": 1031,
                                        "name": "Literal",
                                        "src": "3534:5:8"
                                      }
                                    ],
                                    "id": 1032,
                                    "name": "Return",
                                    "src": "3527:12:8"
                                  }
                                ],
                                "id": 1033,
                                "name": "Block",
                                "src": "3509:45:8"
                              }
                            ],
                            "id": 1034,
                            "name": "IfStatement",
                            "src": "3455:99:8"
                          },
                          {
                            "attributes": {
                              "falseBody": null
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "operator": "!=",
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        null
                                      ],
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "isStructConstructorCall": false,
                                      "lValueRequested": false,
                                      "names": [
                                        null
                                      ],
                                      "type": "address",
                                      "type_conversion": false
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": [
                                            null
                                          ],
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "member_name": "election",
                                          "referencedDeclaration": 388,
                                          "type": "function () view external returns (address)"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "isStructConstructorCall": false,
                                              "lValueRequested": false,
                                              "names": [
                                                null
                                              ],
                                              "type": "contract TieredPool",
                                              "type_conversion": true
                                            },
                                            "children": [
                                              {
                                                "attributes": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  ],
                                                  "overloadedDeclarations": [
                                                    null
                                                  ],
                                                  "referencedDeclaration": 1480,
                                                  "type": "type(contract TieredPool)",
                                                  "value": "TieredPool"
                                                },
                                                "id": 1035,
                                                "name": "Identifier",
                                                "src": "3619:10:8"
                                              },
                                              {
                                                "attributes": {
                                                  "argumentTypes": null,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "isStructConstructorCall": false,
                                                  "lValueRequested": false,
                                                  "names": [
                                                    null
                                                  ],
                                                  "type": "address",
                                                  "type_conversion": false
                                                },
                                                "children": [
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": [
                                                        {
                                                          "typeIdentifier": "t_uint256",
                                                          "typeString": "uint256"
                                                        }
                                                      ],
                                                      "isConstant": false,
                                                      "isLValue": true,
                                                      "isPure": false,
                                                      "lValueRequested": false,
                                                      "member_name": "getAt",
                                                      "referencedDeclaration": 1586,
                                                      "type": "function (struct AddressSet.SetData storage pointer,uint256) view returns (address)"
                                                    },
                                                    "children": [
                                                      {
                                                        "attributes": {
                                                          "argumentTypes": null,
                                                          "overloadedDeclarations": [
                                                            null
                                                          ],
                                                          "referencedDeclaration": 718,
                                                          "type": "struct AddressSet.SetData storage ref",
                                                          "value": "poolSet"
                                                        },
                                                        "id": 1036,
                                                        "name": "Identifier",
                                                        "src": "3630:7:8"
                                                      }
                                                    ],
                                                    "id": 1037,
                                                    "name": "MemberAccess",
                                                    "src": "3630:13:8"
                                                  },
                                                  {
                                                    "attributes": {
                                                      "argumentTypes": null,
                                                      "overloadedDeclarations": [
                                                        null
                                                      ],
                                                      "referencedDeclaration": 1010,
                                                      "type": "uint256",
                                                      "value": "i"
                                                    },
                                                    "id": 1038,
                                                    "name": "Identifier",
                                                    "src": "3644:1:8"
                                                  }
                                                ],
                                                "id": 1039,
                                                "name": "FunctionCall",
                                                "src": "3630:16:8"
                                              }
                                            ],
                                            "id": 1040,
                                            "name": "FunctionCall",
                                            "src": "3619:28:8"
                                          }
                                        ],
                                        "id": 1041,
                                        "name": "MemberAccess",
                                        "src": "3619:37:8"
                                      }
                                    ],
                                    "id": 1042,
                                    "name": "FunctionCall",
                                    "src": "3619:39:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 842,
                                      "type": "address",
                                      "value": "election"
                                    },
                                    "id": 1043,
                                    "name": "Identifier",
                                    "src": "3662:8:8"
                                  }
                                ],
                                "id": 1044,
                                "name": "BinaryOperation",
                                "src": "3619:51:8"
                              },
                              {
                                "children": [
                                  {
                                    "attributes": {
                                      "functionReturnParameters": 999
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "hexvalue": "66616c7365",
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "lValueRequested": false,
                                          "subdenomination": null,
                                          "token": "bool",
                                          "type": "bool",
                                          "value": "false"
                                        },
                                        "id": 1045,
                                        "name": "Literal",
                                        "src": "3697:5:8"
                                      }
                                    ],
                                    "id": 1046,
                                    "name": "Return",
                                    "src": "3690:12:8"
                                  }
                                ],
                                "id": 1047,
                                "name": "Block",
                                "src": "3672:45:8"
                              }
                            ],
                            "id": 1048,
                            "name": "IfStatement",
                            "src": "3615:102:8"
                          }
                        ],
                        "id": 1049,
                        "name": "Block",
                        "src": "3394:333:8"
                      }
                    ],
                    "id": 1050,
                    "name": "ForStatement",
                    "src": "3351:376:8"
                  },
                  {
                    "attributes": {
                      "functionReturnParameters": 999
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "hexvalue": "74727565",
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "subdenomination": null,
                          "token": "bool",
                          "type": "bool",
                          "value": "true"
                        },
                        "id": 1051,
                        "name": "Literal",
                        "src": "3743:4:8"
                      }
                    ],
                    "id": 1052,
                    "name": "Return",
                    "src": "3736:11:8"
                  }
                ],
                "id": 1053,
                "name": "Block",
                "src": "3223:531:8"
              }
            ],
            "id": 1054,
            "name": "FunctionDefinition",
            "src": "3170:584:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "checkConfig",
              "payable": false,
              "scope": 1258,
              "stateMutability": "view",
              "superFunction": 2077,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1055,
                "name": "ParameterList",
                "src": "3780:2:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1066,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bool",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bool",
                          "type": "bool"
                        },
                        "id": 1056,
                        "name": "ElementaryTypeName",
                        "src": "3808:4:8"
                      }
                    ],
                    "id": 1057,
                    "name": "VariableDeclaration",
                    "src": "3808:4:8"
                  }
                ],
                "id": 1058,
                "name": "ParameterList",
                "src": "3807:6:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1058
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "&&",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 995,
                                  "type": "function () view returns (bool)",
                                  "value": "checkElection"
                                },
                                "id": 1059,
                                "name": "Identifier",
                                "src": "3831:13:8"
                              }
                            ],
                            "id": 1060,
                            "name": "FunctionCall",
                            "src": "3831:15:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1054,
                                  "type": "function () view returns (bool)",
                                  "value": "checkPools"
                                },
                                "id": 1061,
                                "name": "Identifier",
                                "src": "3850:10:8"
                              }
                            ],
                            "id": 1062,
                            "name": "FunctionCall",
                            "src": "3850:12:8"
                          }
                        ],
                        "id": 1063,
                        "name": "BinaryOperation",
                        "src": "3831:31:8"
                      }
                    ],
                    "id": 1064,
                    "name": "Return",
                    "src": "3824:38:8"
                  }
                ],
                "id": 1065,
                "name": "Block",
                "src": "3814:55:8"
              }
            ],
            "id": 1066,
            "name": "FunctionDefinition",
            "src": "3760:109:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getGroupCount",
              "payable": false,
              "scope": 1258,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1067,
                "name": "ParameterList",
                "src": "3897:2:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1076,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1068,
                        "name": "ElementaryTypeName",
                        "src": "3925:7:8"
                      }
                    ],
                    "id": 1069,
                    "name": "VariableDeclaration",
                    "src": "3925:7:8"
                  }
                ],
                "id": 1070,
                "name": "ParameterList",
                "src": "3924:9:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1070
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "size",
                              "referencedDeclaration": 1804,
                              "type": "function (struct Bytes32Set.SetData storage pointer) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 832,
                                  "type": "struct Bytes32Set.SetData storage ref",
                                  "value": "groupSet"
                                },
                                "id": 1071,
                                "name": "Identifier",
                                "src": "3951:8:8"
                              }
                            ],
                            "id": 1072,
                            "name": "MemberAccess",
                            "src": "3951:13:8"
                          }
                        ],
                        "id": 1073,
                        "name": "FunctionCall",
                        "src": "3951:15:8"
                      }
                    ],
                    "id": 1074,
                    "name": "Return",
                    "src": "3944:22:8"
                  }
                ],
                "id": 1075,
                "name": "Block",
                "src": "3934:39:8"
              }
            ],
            "id": 1076,
            "name": "FunctionDefinition",
            "src": "3875:98:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getGroup",
              "payable": false,
              "scope": 1258,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "index",
                      "scope": 1089,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1077,
                        "name": "ElementaryTypeName",
                        "src": "3997:7:8"
                      }
                    ],
                    "id": 1078,
                    "name": "VariableDeclaration",
                    "src": "3997:13:8"
                  }
                ],
                "id": 1079,
                "name": "ParameterList",
                "src": "3996:15:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1089,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1080,
                        "name": "ElementaryTypeName",
                        "src": "4037:7:8"
                      }
                    ],
                    "id": 1081,
                    "name": "VariableDeclaration",
                    "src": "4037:7:8"
                  }
                ],
                "id": 1082,
                "name": "ParameterList",
                "src": "4036:9:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1082
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "getAt",
                              "referencedDeclaration": 1777,
                              "type": "function (struct Bytes32Set.SetData storage pointer,uint256) view returns (bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 832,
                                  "type": "struct Bytes32Set.SetData storage ref",
                                  "value": "groupSet"
                                },
                                "id": 1083,
                                "name": "Identifier",
                                "src": "4063:8:8"
                              }
                            ],
                            "id": 1084,
                            "name": "MemberAccess",
                            "src": "4063:14:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1078,
                              "type": "uint256",
                              "value": "index"
                            },
                            "id": 1085,
                            "name": "Identifier",
                            "src": "4078:5:8"
                          }
                        ],
                        "id": 1086,
                        "name": "FunctionCall",
                        "src": "4063:21:8"
                      }
                    ],
                    "id": 1087,
                    "name": "Return",
                    "src": "4056:28:8"
                  }
                ],
                "id": 1088,
                "name": "Block",
                "src": "4046:45:8"
              }
            ],
            "id": 1089,
            "name": "FunctionDefinition",
            "src": "3979:112:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "removeGroup",
              "payable": false,
              "scope": 1258,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "group",
                      "scope": 1133,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1090,
                        "name": "ElementaryTypeName",
                        "src": "4118:7:8"
                      }
                    ],
                    "id": 1091,
                    "name": "VariableDeclaration",
                    "src": "4118:13:8"
                  }
                ],
                "id": 1092,
                "name": "ParameterList",
                "src": "4117:15:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1097,
                "name": "ParameterList",
                "src": "4155:0:8"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2043,
                      "type": "modifier ()",
                      "value": "building"
                    },
                    "id": 1093,
                    "name": "Identifier",
                    "src": "4140:8:8"
                  }
                ],
                "id": 1094,
                "name": "ModifierInvocation",
                "src": "4140:8:8"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 19,
                      "type": "modifier ()",
                      "value": "admin"
                    },
                    "id": 1095,
                    "name": "Identifier",
                    "src": "4149:5:8"
                  }
                ],
                "id": 1096,
                "name": "ModifierInvocation",
                "src": "4149:5:8"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "remove",
                              "referencedDeclaration": 1923,
                              "type": "function (struct Bytes32Set.SetData storage pointer,bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 832,
                                  "type": "struct Bytes32Set.SetData storage ref",
                                  "value": "groupSet"
                                },
                                "id": 1098,
                                "name": "Identifier",
                                "src": "4165:8:8"
                              }
                            ],
                            "id": 1100,
                            "name": "MemberAccess",
                            "src": "4165:15:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1091,
                              "type": "bytes32",
                              "value": "group"
                            },
                            "id": 1101,
                            "name": "Identifier",
                            "src": "4181:5:8"
                          }
                        ],
                        "id": 1102,
                        "name": "FunctionCall",
                        "src": "4165:22:8"
                      }
                    ],
                    "id": 1103,
                    "name": "ExpressionStatement",
                    "src": "4165:22:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "assignments": [
                            1105
                          ]
                        },
                        "children": [
                          {
                            "attributes": {
                              "constant": false,
                              "name": "i",
                              "scope": 1133,
                              "stateVariable": false,
                              "storageLocation": "default",
                              "type": "uint256",
                              "value": null,
                              "visibility": "internal"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "name": "uint256",
                                  "type": "uint256"
                                },
                                "id": 1104,
                                "name": "ElementaryTypeName",
                                "src": "4202:7:8"
                              }
                            ],
                            "id": 1105,
                            "name": "VariableDeclaration",
                            "src": "4202:9:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "30",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "number",
                              "type": "int_const 0",
                              "value": "0"
                            },
                            "id": 1106,
                            "name": "Literal",
                            "src": "4214:1:8"
                          }
                        ],
                        "id": 1107,
                        "name": "VariableDeclarationStatement",
                        "src": "4202:13:8"
                      },
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "<",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1105,
                              "type": "uint256",
                              "value": "i"
                            },
                            "id": 1108,
                            "name": "Identifier",
                            "src": "4217:1:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "arguments": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "uint256",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    null
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "size",
                                  "referencedDeclaration": 1613,
                                  "type": "function (struct AddressSet.SetData storage pointer) view returns (uint256)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 718,
                                      "type": "struct AddressSet.SetData storage ref",
                                      "value": "poolSet"
                                    },
                                    "id": 1109,
                                    "name": "Identifier",
                                    "src": "4219:7:8"
                                  }
                                ],
                                "id": 1110,
                                "name": "MemberAccess",
                                "src": "4219:12:8"
                              }
                            ],
                            "id": 1111,
                            "name": "FunctionCall",
                            "src": "4219:14:8"
                          }
                        ],
                        "id": 1112,
                        "name": "BinaryOperation",
                        "src": "4217:16:8"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "++",
                              "prefix": false,
                              "type": "uint256"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1105,
                                  "type": "uint256",
                                  "value": "i"
                                },
                                "id": 1113,
                                "name": "Identifier",
                                "src": "4235:1:8"
                              }
                            ],
                            "id": 1114,
                            "name": "UnaryOperation",
                            "src": "4235:3:8"
                          }
                        ],
                        "id": 1115,
                        "name": "ExpressionStatement",
                        "src": "4235:3:8"
                      },
                      {
                        "children": [
                          {
                            "attributes": {
                              "assignments": [
                                1117
                              ]
                            },
                            "children": [
                              {
                                "attributes": {
                                  "constant": false,
                                  "name": "p",
                                  "scope": 1133,
                                  "stateVariable": false,
                                  "storageLocation": "default",
                                  "type": "address",
                                  "value": null,
                                  "visibility": "internal"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "name": "address",
                                      "type": "address"
                                    },
                                    "id": 1116,
                                    "name": "ElementaryTypeName",
                                    "src": "4254:7:8"
                                  }
                                ],
                                "id": 1117,
                                "name": "VariableDeclaration",
                                "src": "4254:9:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "address",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "getAt",
                                      "referencedDeclaration": 1586,
                                      "type": "function (struct AddressSet.SetData storage pointer,uint256) view returns (address)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 718,
                                          "type": "struct AddressSet.SetData storage ref",
                                          "value": "poolSet"
                                        },
                                        "id": 1118,
                                        "name": "Identifier",
                                        "src": "4266:7:8"
                                      }
                                    ],
                                    "id": 1119,
                                    "name": "MemberAccess",
                                    "src": "4266:13:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1105,
                                      "type": "uint256",
                                      "value": "i"
                                    },
                                    "id": 1120,
                                    "name": "Identifier",
                                    "src": "4280:1:8"
                                  }
                                ],
                                "id": 1121,
                                "name": "FunctionCall",
                                "src": "4266:16:8"
                              }
                            ],
                            "id": 1122,
                            "name": "VariableDeclarationStatement",
                            "src": "4254:28:8"
                          },
                          {
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "isStructConstructorCall": false,
                                  "lValueRequested": false,
                                  "names": [
                                    null
                                  ],
                                  "type": "tuple()",
                                  "type_conversion": false
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      ],
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "remove",
                                      "referencedDeclaration": 1923,
                                      "type": "function (struct Bytes32Set.SetData storage pointer,bytes32)"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "type": "struct Bytes32Set.SetData storage ref"
                                        },
                                        "children": [
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 840,
                                              "type": "mapping(address => struct Bytes32Set.SetData storage ref)",
                                              "value": "poolGroupSet"
                                            },
                                            "id": 1123,
                                            "name": "Identifier",
                                            "src": "4296:12:8"
                                          },
                                          {
                                            "attributes": {
                                              "argumentTypes": null,
                                              "overloadedDeclarations": [
                                                null
                                              ],
                                              "referencedDeclaration": 1117,
                                              "type": "address",
                                              "value": "p"
                                            },
                                            "id": 1124,
                                            "name": "Identifier",
                                            "src": "4309:1:8"
                                          }
                                        ],
                                        "id": 1125,
                                        "name": "IndexAccess",
                                        "src": "4296:15:8"
                                      }
                                    ],
                                    "id": 1126,
                                    "name": "MemberAccess",
                                    "src": "4296:22:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1091,
                                      "type": "bytes32",
                                      "value": "group"
                                    },
                                    "id": 1127,
                                    "name": "Identifier",
                                    "src": "4319:5:8"
                                  }
                                ],
                                "id": 1128,
                                "name": "FunctionCall",
                                "src": "4296:29:8"
                              }
                            ],
                            "id": 1129,
                            "name": "ExpressionStatement",
                            "src": "4296:29:8"
                          }
                        ],
                        "id": 1130,
                        "name": "Block",
                        "src": "4240:96:8"
                      }
                    ],
                    "id": 1131,
                    "name": "ForStatement",
                    "src": "4197:139:8"
                  }
                ],
                "id": 1132,
                "name": "Block",
                "src": "4155:187:8"
              }
            ],
            "id": 1133,
            "name": "FunctionDefinition",
            "src": "4097:245:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "addGroup",
              "payable": false,
              "scope": 1258,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "group",
                      "scope": 1149,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1134,
                        "name": "ElementaryTypeName",
                        "src": "4366:7:8"
                      }
                    ],
                    "id": 1135,
                    "name": "VariableDeclaration",
                    "src": "4366:13:8"
                  }
                ],
                "id": 1136,
                "name": "ParameterList",
                "src": "4365:15:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1141,
                "name": "ParameterList",
                "src": "4403:0:8"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2043,
                      "type": "modifier ()",
                      "value": "building"
                    },
                    "id": 1137,
                    "name": "Identifier",
                    "src": "4388:8:8"
                  }
                ],
                "id": 1138,
                "name": "ModifierInvocation",
                "src": "4388:8:8"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 19,
                      "type": "modifier ()",
                      "value": "admin"
                    },
                    "id": 1139,
                    "name": "Identifier",
                    "src": "4397:5:8"
                  }
                ],
                "id": 1140,
                "name": "ModifierInvocation",
                "src": "4397:5:8"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "put",
                              "referencedDeclaration": 1847,
                              "type": "function (struct Bytes32Set.SetData storage pointer,bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 832,
                                  "type": "struct Bytes32Set.SetData storage ref",
                                  "value": "groupSet"
                                },
                                "id": 1142,
                                "name": "Identifier",
                                "src": "4413:8:8"
                              }
                            ],
                            "id": 1144,
                            "name": "MemberAccess",
                            "src": "4413:12:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1135,
                              "type": "bytes32",
                              "value": "group"
                            },
                            "id": 1145,
                            "name": "Identifier",
                            "src": "4426:5:8"
                          }
                        ],
                        "id": 1146,
                        "name": "FunctionCall",
                        "src": "4413:19:8"
                      }
                    ],
                    "id": 1147,
                    "name": "ExpressionStatement",
                    "src": "4413:19:8"
                  }
                ],
                "id": 1148,
                "name": "Block",
                "src": "4403:36:8"
              }
            ],
            "id": 1149,
            "name": "FunctionDefinition",
            "src": "4348:91:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getPoolGroupCount",
              "payable": false,
              "scope": 1258,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "pool",
                      "scope": 1163,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1150,
                        "name": "ElementaryTypeName",
                        "src": "4472:7:8"
                      }
                    ],
                    "id": 1151,
                    "name": "VariableDeclaration",
                    "src": "4472:12:8"
                  }
                ],
                "id": 1152,
                "name": "ParameterList",
                "src": "4471:14:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1163,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1153,
                        "name": "ElementaryTypeName",
                        "src": "4510:7:8"
                      }
                    ],
                    "id": 1154,
                    "name": "VariableDeclaration",
                    "src": "4510:7:8"
                  }
                ],
                "id": 1155,
                "name": "ParameterList",
                "src": "4509:9:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1155
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "arguments": [
                            null
                          ],
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                null
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "size",
                              "referencedDeclaration": 1804,
                              "type": "function (struct Bytes32Set.SetData storage pointer) view returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct Bytes32Set.SetData storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 840,
                                      "type": "mapping(address => struct Bytes32Set.SetData storage ref)",
                                      "value": "poolGroupSet"
                                    },
                                    "id": 1156,
                                    "name": "Identifier",
                                    "src": "4536:12:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1151,
                                      "type": "address",
                                      "value": "pool"
                                    },
                                    "id": 1157,
                                    "name": "Identifier",
                                    "src": "4549:4:8"
                                  }
                                ],
                                "id": 1158,
                                "name": "IndexAccess",
                                "src": "4536:18:8"
                              }
                            ],
                            "id": 1159,
                            "name": "MemberAccess",
                            "src": "4536:23:8"
                          }
                        ],
                        "id": 1160,
                        "name": "FunctionCall",
                        "src": "4536:25:8"
                      }
                    ],
                    "id": 1161,
                    "name": "Return",
                    "src": "4529:32:8"
                  }
                ],
                "id": 1162,
                "name": "Block",
                "src": "4519:49:8"
              }
            ],
            "id": 1163,
            "name": "FunctionDefinition",
            "src": "4445:123:8"
          },
          {
            "attributes": {
              "constant": true,
              "implemented": true,
              "isConstructor": false,
              "modifiers": [
                null
              ],
              "name": "getPoolGroupAt",
              "payable": false,
              "scope": 1258,
              "stateMutability": "view",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "pool",
                      "scope": 1180,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1164,
                        "name": "ElementaryTypeName",
                        "src": "4598:7:8"
                      }
                    ],
                    "id": 1165,
                    "name": "VariableDeclaration",
                    "src": "4598:12:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "index",
                      "scope": 1180,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "uint256",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "uint256",
                          "type": "uint256"
                        },
                        "id": 1166,
                        "name": "ElementaryTypeName",
                        "src": "4612:7:8"
                      }
                    ],
                    "id": 1167,
                    "name": "VariableDeclaration",
                    "src": "4612:13:8"
                  }
                ],
                "id": 1168,
                "name": "ParameterList",
                "src": "4597:29:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "",
                      "scope": 1180,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1169,
                        "name": "ElementaryTypeName",
                        "src": "4651:7:8"
                      }
                    ],
                    "id": 1170,
                    "name": "VariableDeclaration",
                    "src": "4651:7:8"
                  }
                ],
                "id": 1171,
                "name": "ParameterList",
                "src": "4650:9:8"
              },
              {
                "children": [
                  {
                    "attributes": {
                      "functionReturnParameters": 1171
                    },
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "bytes32",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "getAt",
                              "referencedDeclaration": 1777,
                              "type": "function (struct Bytes32Set.SetData storage pointer,uint256) view returns (bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct Bytes32Set.SetData storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 840,
                                      "type": "mapping(address => struct Bytes32Set.SetData storage ref)",
                                      "value": "poolGroupSet"
                                    },
                                    "id": 1172,
                                    "name": "Identifier",
                                    "src": "4677:12:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1165,
                                      "type": "address",
                                      "value": "pool"
                                    },
                                    "id": 1173,
                                    "name": "Identifier",
                                    "src": "4690:4:8"
                                  }
                                ],
                                "id": 1174,
                                "name": "IndexAccess",
                                "src": "4677:18:8"
                              }
                            ],
                            "id": 1175,
                            "name": "MemberAccess",
                            "src": "4677:24:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1167,
                              "type": "uint256",
                              "value": "index"
                            },
                            "id": 1176,
                            "name": "Identifier",
                            "src": "4702:5:8"
                          }
                        ],
                        "id": 1177,
                        "name": "FunctionCall",
                        "src": "4677:31:8"
                      }
                    ],
                    "id": 1178,
                    "name": "Return",
                    "src": "4670:38:8"
                  }
                ],
                "id": 1179,
                "name": "Block",
                "src": "4660:55:8"
              }
            ],
            "id": 1180,
            "name": "FunctionDefinition",
            "src": "4574:141:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "addPoolToGroup",
              "payable": false,
              "scope": 1258,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "pool",
                      "scope": 1220,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "address",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "address",
                          "type": "address"
                        },
                        "id": 1181,
                        "name": "ElementaryTypeName",
                        "src": "4745:7:8"
                      }
                    ],
                    "id": 1182,
                    "name": "VariableDeclaration",
                    "src": "4745:12:8"
                  },
                  {
                    "attributes": {
                      "constant": false,
                      "name": "group",
                      "scope": 1220,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1183,
                        "name": "ElementaryTypeName",
                        "src": "4759:7:8"
                      }
                    ],
                    "id": 1184,
                    "name": "VariableDeclaration",
                    "src": "4759:13:8"
                  }
                ],
                "id": 1185,
                "name": "ParameterList",
                "src": "4744:29:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1190,
                "name": "ParameterList",
                "src": "4796:0:8"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2043,
                      "type": "modifier ()",
                      "value": "building"
                    },
                    "id": 1186,
                    "name": "Identifier",
                    "src": "4781:8:8"
                  }
                ],
                "id": 1187,
                "name": "ModifierInvocation",
                "src": "4781:8:8"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 19,
                      "type": "modifier ()",
                      "value": "admin"
                    },
                    "id": 1188,
                    "name": "Identifier",
                    "src": "4790:5:8"
                  }
                ],
                "id": 1189,
                "name": "ModifierInvocation",
                "src": "4790:5:8"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3241,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 1191,
                            "name": "Identifier",
                            "src": "4806:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "contains",
                                  "referencedDeclaration": 1792,
                                  "type": "function (struct Bytes32Set.SetData storage pointer,bytes32) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 832,
                                      "type": "struct Bytes32Set.SetData storage ref",
                                      "value": "groupSet"
                                    },
                                    "id": 1192,
                                    "name": "Identifier",
                                    "src": "4814:8:8"
                                  }
                                ],
                                "id": 1193,
                                "name": "MemberAccess",
                                "src": "4814:17:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1184,
                                  "type": "bytes32",
                                  "value": "group"
                                },
                                "id": 1194,
                                "name": "Identifier",
                                "src": "4832:5:8"
                              }
                            ],
                            "id": 1195,
                            "name": "FunctionCall",
                            "src": "4814:24:8"
                          }
                        ],
                        "id": 1196,
                        "name": "FunctionCall",
                        "src": "4806:33:8"
                      }
                    ],
                    "id": 1197,
                    "name": "ExpressionStatement",
                    "src": "4806:33:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3241,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 1198,
                            "name": "Identifier",
                            "src": "4849:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "isStructConstructorCall": false,
                              "lValueRequested": false,
                              "names": [
                                null
                              ],
                              "type": "bool",
                              "type_conversion": false
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "member_name": "contains",
                                  "referencedDeclaration": 1601,
                                  "type": "function (struct AddressSet.SetData storage pointer,address) view returns (bool)"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 718,
                                      "type": "struct AddressSet.SetData storage ref",
                                      "value": "poolSet"
                                    },
                                    "id": 1199,
                                    "name": "Identifier",
                                    "src": "4857:7:8"
                                  }
                                ],
                                "id": 1200,
                                "name": "MemberAccess",
                                "src": "4857:16:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1182,
                                  "type": "address",
                                  "value": "pool"
                                },
                                "id": 1201,
                                "name": "Identifier",
                                "src": "4874:4:8"
                              }
                            ],
                            "id": 1202,
                            "name": "FunctionCall",
                            "src": "4857:22:8"
                          }
                        ],
                        "id": 1203,
                        "name": "FunctionCall",
                        "src": "4849:31:8"
                      }
                    ],
                    "id": 1204,
                    "name": "ExpressionStatement",
                    "src": "4849:31:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "put",
                              "referencedDeclaration": 1656,
                              "type": "function (struct AddressSet.SetData storage pointer,address)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct AddressSet.SetData storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 836,
                                      "type": "mapping(bytes32 => struct AddressSet.SetData storage ref)",
                                      "value": "groupPoolSet"
                                    },
                                    "id": 1205,
                                    "name": "Identifier",
                                    "src": "4890:12:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1184,
                                      "type": "bytes32",
                                      "value": "group"
                                    },
                                    "id": 1206,
                                    "name": "Identifier",
                                    "src": "4903:5:8"
                                  }
                                ],
                                "id": 1207,
                                "name": "IndexAccess",
                                "src": "4890:19:8"
                              }
                            ],
                            "id": 1208,
                            "name": "MemberAccess",
                            "src": "4890:23:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1182,
                              "type": "address",
                              "value": "pool"
                            },
                            "id": 1209,
                            "name": "Identifier",
                            "src": "4914:4:8"
                          }
                        ],
                        "id": 1210,
                        "name": "FunctionCall",
                        "src": "4890:29:8"
                      }
                    ],
                    "id": 1211,
                    "name": "ExpressionStatement",
                    "src": "4890:29:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "put",
                              "referencedDeclaration": 1847,
                              "type": "function (struct Bytes32Set.SetData storage pointer,bytes32)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "struct Bytes32Set.SetData storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 840,
                                      "type": "mapping(address => struct Bytes32Set.SetData storage ref)",
                                      "value": "poolGroupSet"
                                    },
                                    "id": 1212,
                                    "name": "Identifier",
                                    "src": "4929:12:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1182,
                                      "type": "address",
                                      "value": "pool"
                                    },
                                    "id": 1213,
                                    "name": "Identifier",
                                    "src": "4942:4:8"
                                  }
                                ],
                                "id": 1214,
                                "name": "IndexAccess",
                                "src": "4929:18:8"
                              }
                            ],
                            "id": 1215,
                            "name": "MemberAccess",
                            "src": "4929:22:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1184,
                              "type": "bytes32",
                              "value": "group"
                            },
                            "id": 1216,
                            "name": "Identifier",
                            "src": "4952:5:8"
                          }
                        ],
                        "id": 1217,
                        "name": "FunctionCall",
                        "src": "4929:29:8"
                      }
                    ],
                    "id": 1218,
                    "name": "ExpressionStatement",
                    "src": "4929:29:8"
                  }
                ],
                "id": 1219,
                "name": "Block",
                "src": "4796:169:8"
              }
            ],
            "id": 1220,
            "name": "FunctionDefinition",
            "src": "4721:244:8"
          },
          {
            "attributes": {
              "constant": false,
              "implemented": true,
              "isConstructor": false,
              "name": "castVote",
              "payable": false,
              "scope": 1258,
              "stateMutability": "nonpayable",
              "superFunction": null,
              "visibility": "public"
            },
            "children": [
              {
                "children": [
                  {
                    "attributes": {
                      "constant": false,
                      "name": "voteId",
                      "scope": 1257,
                      "stateVariable": false,
                      "storageLocation": "default",
                      "type": "bytes32",
                      "value": null,
                      "visibility": "internal"
                    },
                    "children": [
                      {
                        "attributes": {
                          "name": "bytes32",
                          "type": "bytes32"
                        },
                        "id": 1221,
                        "name": "ElementaryTypeName",
                        "src": "4989:7:8"
                      }
                    ],
                    "id": 1222,
                    "name": "VariableDeclaration",
                    "src": "4989:14:8"
                  }
                ],
                "id": 1223,
                "name": "ParameterList",
                "src": "4988:16:8"
              },
              {
                "attributes": {
                  "parameters": [
                    null
                  ]
                },
                "children": [],
                "id": 1228,
                "name": "ParameterList",
                "src": "5029:0:8"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 2058,
                      "type": "modifier ()",
                      "value": "voting"
                    },
                    "id": 1224,
                    "name": "Identifier",
                    "src": "5012:6:8"
                  }
                ],
                "id": 1225,
                "name": "ModifierInvocation",
                "src": "5012:6:8"
              },
              {
                "attributes": {
                  "arguments": [
                    null
                  ]
                },
                "children": [
                  {
                    "attributes": {
                      "argumentTypes": null,
                      "overloadedDeclarations": [
                        null
                      ],
                      "referencedDeclaration": 895,
                      "type": "modifier ()",
                      "value": "validPool"
                    },
                    "id": 1226,
                    "name": "Identifier",
                    "src": "5019:9:8"
                  }
                ],
                "id": 1227,
                "name": "ModifierInvocation",
                "src": "5019:9:8"
              },
              {
                "children": [
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 3241,
                              "type": "function (bool) pure",
                              "value": "require"
                            },
                            "id": 1229,
                            "name": "Identifier",
                            "src": "5039:7:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "operator": "!",
                              "prefix": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bool"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 846,
                                      "type": "mapping(bytes32 => bool)",
                                      "value": "voterVoted"
                                    },
                                    "id": 1230,
                                    "name": "Identifier",
                                    "src": "5048:10:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 1222,
                                      "type": "bytes32",
                                      "value": "voteId"
                                    },
                                    "id": 1231,
                                    "name": "Identifier",
                                    "src": "5059:6:8"
                                  }
                                ],
                                "id": 1232,
                                "name": "IndexAccess",
                                "src": "5048:18:8"
                              }
                            ],
                            "id": 1233,
                            "name": "UnaryOperation",
                            "src": "5047:19:8"
                          }
                        ],
                        "id": 1234,
                        "name": "FunctionCall",
                        "src": "5039:28:8"
                      }
                    ],
                    "id": 1235,
                    "name": "ExpressionStatement",
                    "src": "5039:28:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "operator": "=",
                          "type": "bool"
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": true,
                              "type": "bool"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 846,
                                  "type": "mapping(bytes32 => bool)",
                                  "value": "voterVoted"
                                },
                                "id": 1236,
                                "name": "Identifier",
                                "src": "5077:10:8"
                              },
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 1222,
                                  "type": "bytes32",
                                  "value": "voteId"
                                },
                                "id": 1237,
                                "name": "Identifier",
                                "src": "5088:6:8"
                              }
                            ],
                            "id": 1238,
                            "name": "IndexAccess",
                            "src": "5077:18:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "hexvalue": "74727565",
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "subdenomination": null,
                              "token": "bool",
                              "type": "bool",
                              "value": "true"
                            },
                            "id": 1239,
                            "name": "Literal",
                            "src": "5098:4:8"
                          }
                        ],
                        "id": 1240,
                        "name": "Assignment",
                        "src": "5077:25:8"
                      }
                    ],
                    "id": 1241,
                    "name": "ExpressionStatement",
                    "src": "5077:25:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "uint256",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "push",
                              "referencedDeclaration": null,
                              "type": "function (bytes32) returns (uint256)"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "type": "bytes32[] storage ref"
                                },
                                "children": [
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "overloadedDeclarations": [
                                        null
                                      ],
                                      "referencedDeclaration": 851,
                                      "type": "mapping(address => bytes32[] storage ref)",
                                      "value": "poolVoters"
                                    },
                                    "id": 1242,
                                    "name": "Identifier",
                                    "src": "5112:10:8"
                                  },
                                  {
                                    "attributes": {
                                      "argumentTypes": null,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "member_name": "sender",
                                      "referencedDeclaration": null,
                                      "type": "address"
                                    },
                                    "children": [
                                      {
                                        "attributes": {
                                          "argumentTypes": null,
                                          "overloadedDeclarations": [
                                            null
                                          ],
                                          "referencedDeclaration": 3238,
                                          "type": "msg",
                                          "value": "msg"
                                        },
                                        "id": 1243,
                                        "name": "Identifier",
                                        "src": "5123:3:8"
                                      }
                                    ],
                                    "id": 1244,
                                    "name": "MemberAccess",
                                    "src": "5123:10:8"
                                  }
                                ],
                                "id": 1245,
                                "name": "IndexAccess",
                                "src": "5112:22:8"
                              }
                            ],
                            "id": 1246,
                            "name": "MemberAccess",
                            "src": "5112:27:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1222,
                              "type": "bytes32",
                              "value": "voteId"
                            },
                            "id": 1247,
                            "name": "Identifier",
                            "src": "5140:6:8"
                          }
                        ],
                        "id": 1248,
                        "name": "FunctionCall",
                        "src": "5112:35:8"
                      }
                    ],
                    "id": 1249,
                    "name": "ExpressionStatement",
                    "src": "5112:35:8"
                  },
                  {
                    "children": [
                      {
                        "attributes": {
                          "argumentTypes": null,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "isStructConstructorCall": false,
                          "lValueRequested": false,
                          "names": [
                            null
                          ],
                          "type": "tuple()",
                          "type_conversion": false
                        },
                        "children": [
                          {
                            "attributes": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 827,
                              "type": "function (address,bytes32)",
                              "value": "BallotVote"
                            },
                            "id": 1250,
                            "name": "Identifier",
                            "src": "5157:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "member_name": "sender",
                              "referencedDeclaration": null,
                              "type": "address"
                            },
                            "children": [
                              {
                                "attributes": {
                                  "argumentTypes": null,
                                  "overloadedDeclarations": [
                                    null
                                  ],
                                  "referencedDeclaration": 3238,
                                  "type": "msg",
                                  "value": "msg"
                                },
                                "id": 1251,
                                "name": "Identifier",
                                "src": "5168:3:8"
                              }
                            ],
                            "id": 1252,
                            "name": "MemberAccess",
                            "src": "5168:10:8"
                          },
                          {
                            "attributes": {
                              "argumentTypes": null,
                              "overloadedDeclarations": [
                                null
                              ],
                              "referencedDeclaration": 1222,
                              "type": "bytes32",
                              "value": "voteId"
                            },
                            "id": 1253,
                            "name": "Identifier",
                            "src": "5180:6:8"
                          }
                        ],
                        "id": 1254,
                        "name": "FunctionCall",
                        "src": "5157:30:8"
                      }
                    ],
                    "id": 1255,
                    "name": "ExpressionStatement",
                    "src": "5157:30:8"
                  }
                ],
                "id": 1256,
                "name": "Block",
                "src": "5029:165:8"
              }
            ],
            "id": 1257,
            "name": "FunctionDefinition",
            "src": "4971:223:8"
          }
        ],
        "id": 1258,
        "name": "ContractDefinition",
        "src": "1254:3942:8"
      }
    ],
    "id": 1259,
    "name": "SourceUnit",
    "src": "868:4328:8"
  },
  "compiler": {
    "name": "solc",
    "version": "0.4.18+commit.9cf6e910.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {},
      "links": {
        "AddressSet": "0xab6f805fb7754d19f82eb8fce07cf70f10c7a620",
        "Bytes32Set": "0x5f3294732f9a04fd6e96a8b0ee414ae65f759232"
      }
    }
  },
  "schemaVersion": "1.0.1",
  "updatedAt": "2018-03-26T15:57:59.462Z"
}