{
  "contractName": "AbsoluteVote",
  "abi": [
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "parameters",
      "outputs": [
        {
          "name": "precReq",
          "type": "uint256"
        },
        {
          "name": "voteOnBehalf",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "proposalsCnt",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "proposals",
      "outputs": [
        {
          "name": "organizationId",
          "type": "bytes32"
        },
        {
          "name": "open",
          "type": "bool"
        },
        {
          "name": "callbacks",
          "type": "address"
        },
        {
          "name": "numOfChoices",
          "type": "uint256"
        },
        {
          "name": "paramsHash",
          "type": "bytes32"
        },
        {
          "name": "totalVotes",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "MAX_NUM_OF_CHOICES",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "name": "organizations",
      "outputs": [
        {
          "name": "",
          "type": "address"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "name": "_isProxyVote",
          "type": "bool"
        }
      ],
      "name": "AVVoteProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_numOfChoices",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_proposer",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_paramsHash",
          "type": "bytes32"
        }
      ],
      "name": "NewProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_decision",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_totalReputation",
          "type": "uint256"
        }
      ],
      "name": "ExecuteProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_voter",
          "type": "address"
        },
        {
          "indexed": false,
          "name": "_vote",
          "type": "uint256"
        },
        {
          "indexed": false,
          "name": "_reputation",
          "type": "uint256"
        }
      ],
      "name": "VoteProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_organization",
          "type": "address"
        }
      ],
      "name": "CancelProposal",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "name": "_organization",
          "type": "address"
        },
        {
          "indexed": true,
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "CancelVoting",
      "type": "event"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_numOfChoices",
          "type": "uint256"
        },
        {
          "name": "_paramsHash",
          "type": "bytes32"
        },
        {
          "name": "",
          "type": "address"
        },
        {
          "name": "_organization",
          "type": "address"
        }
      ],
      "name": "propose",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_vote",
          "type": "uint256"
        },
        {
          "name": "_amount",
          "type": "uint256"
        },
        {
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "vote",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "cancelVote",
      "outputs": [],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "execute",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "getNumberOfChoices",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_voter",
          "type": "address"
        }
      ],
      "name": "voteInfo",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        },
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        },
        {
          "name": "_choice",
          "type": "uint256"
        }
      ],
      "name": "voteStatus",
      "outputs": [
        {
          "name": "",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_proposalId",
          "type": "bytes32"
        }
      ],
      "name": "isVotable",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "view",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "isAbstainAllow",
      "outputs": [
        {
          "name": "",
          "type": "bool"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [],
      "name": "getAllowedRangeOfChoices",
      "outputs": [
        {
          "name": "min",
          "type": "uint256"
        },
        {
          "name": "max",
          "type": "uint256"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "constant": false,
      "inputs": [
        {
          "name": "_precReq",
          "type": "uint256"
        },
        {
          "name": "_voteOnBehalf",
          "type": "address"
        }
      ],
      "name": "setParameters",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "constant": true,
      "inputs": [
        {
          "name": "_precReq",
          "type": "uint256"
        },
        {
          "name": "_voteOnBehalf",
          "type": "address"
        }
      ],
      "name": "getParametersHash",
      "outputs": [
        {
          "name": "",
          "type": "bytes32"
        }
      ],
      "payable": false,
      "stateMutability": "pure",
      "type": "function"
    }
  ],
  "metadata": "{\"compiler\":{\"version\":\"0.5.4+commit.9549d8ff\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"parameters\",\"outputs\":[{\"name\":\"precReq\",\"type\":\"uint256\"},{\"name\":\"voteOnBehalf\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"name\":\"_voter\",\"type\":\"address\"}],\"name\":\"voteInfo\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"},{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"proposalsCnt\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_precReq\",\"type\":\"uint256\"},{\"name\":\"_voteOnBehalf\",\"type\":\"address\"}],\"name\":\"setParameters\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_precReq\",\"type\":\"uint256\"},{\"name\":\"_voteOnBehalf\",\"type\":\"address\"}],\"name\":\"getParametersHash\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"proposals\",\"outputs\":[{\"name\":\"organizationId\",\"type\":\"bytes32\"},{\"name\":\"open\",\"type\":\"bool\"},{\"name\":\"callbacks\",\"type\":\"address\"},{\"name\":\"numOfChoices\",\"type\":\"uint256\"},{\"name\":\"paramsHash\",\"type\":\"bytes32\"},{\"name\":\"totalVotes\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"name\":\"_vote\",\"type\":\"uint256\"},{\"name\":\"_amount\",\"type\":\"uint256\"},{\"name\":\"_voter\",\"type\":\"address\"}],\"name\":\"vote\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getAllowedRangeOfChoices\",\"outputs\":[{\"name\":\"min\",\"type\":\"uint256\"},{\"name\":\"max\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isAbstainAllow\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_numOfChoices\",\"type\":\"uint256\"},{\"name\":\"_paramsHash\",\"type\":\"bytes32\"},{\"name\":\"\",\"type\":\"address\"},{\"name\":\"_organization\",\"type\":\"address\"}],\"name\":\"propose\",\"outputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_NUM_OF_CHOICES\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"cancelVote\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"getNumberOfChoices\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"name\":\"_choice\",\"type\":\"uint256\"}],\"name\":\"voteStatus\",\"outputs\":[{\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"\",\"type\":\"bytes32\"}],\"name\":\"organizations\",\"outputs\":[{\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"isVotable\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"name\":\"_proposalId\",\"type\":\"bytes32\"}],\"name\":\"execute\",\"outputs\":[{\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":false,\"name\":\"_isProxyVote\",\"type\":\"bool\"}],\"name\":\"AVVoteProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_numOfChoices\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"_proposer\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_paramsHash\",\"type\":\"bytes32\"}],\"name\":\"NewProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_decision\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"_totalReputation\",\"type\":\"uint256\"}],\"name\":\"ExecuteProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_voter\",\"type\":\"address\"},{\"indexed\":false,\"name\":\"_vote\",\"type\":\"uint256\"},{\"indexed\":false,\"name\":\"_reputation\",\"type\":\"uint256\"}],\"name\":\"VoteProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"_organization\",\"type\":\"address\"}],\"name\":\"CancelProposal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"name\":\"_proposalId\",\"type\":\"bytes32\"},{\"indexed\":true,\"name\":\"_organization\",\"type\":\"address\"},{\"indexed\":true,\"name\":\"_voter\",\"type\":\"address\"}],\"name\":\"CancelVoting\",\"type\":\"event\"}],\"devdoc\":{\"methods\":{\"cancelVote(bytes32)\":{\"details\":\"Cancel the vote of the msg.sender: subtract the reputation amount from the votes and delete the voter from the proposal struct\",\"params\":{\"_proposalId\":\"id of the proposal\"}},\"execute(bytes32)\":{\"details\":\"execute check if the proposal has been decided, and if so, execute the proposal\",\"params\":{\"_proposalId\":\"the id of the proposal\"},\"return\":\"bool true - the proposal has been executed             false - otherwise.\"},\"getAllowedRangeOfChoices()\":{\"details\":\"getAllowedRangeOfChoices returns the allowed range of choices for a voting machine.\",\"return\":\"min - minimum number of choices max - maximum number of choices\"},\"getNumberOfChoices(bytes32)\":{\"details\":\"getNumberOfChoices returns the number of choices possible in this proposal excluding the abstain vote (0)\",\"params\":{\"_proposalId\":\"the ID of the proposal\"},\"return\":\"uint256 that contains number of choices\"},\"getParametersHash(uint256,address)\":{\"details\":\"hashParameters returns a hash of the given parameters\"},\"isAbstainAllow()\":{\"details\":\"isAbstainAllow returns if the voting machine allow abstain (0)\",\"return\":\"bool true or false\"},\"isVotable(bytes32)\":{\"details\":\"isVotable check if the proposal is votable\",\"params\":{\"_proposalId\":\"the ID of the proposal\"},\"return\":\"bool true or false\"},\"propose(uint256,bytes32,address,address)\":{\"details\":\"register a new proposal with the given parameters. Every proposal has a unique ID which is being generated by calculating keccak256 of a incremented counter.\",\"params\":{\"_numOfChoices\":\"number of voting choices\",\"_organization\":\"address\",\"_paramsHash\":\"defined the parameters of the voting machine used for this proposal\"},\"return\":\"proposal's id.\"},\"setParameters(uint256,address)\":{\"details\":\"hash the parameters, save them if necessary, and return the hash value\"},\"vote(bytes32,uint256,uint256,address)\":{\"details\":\"voting function\",\"params\":{\"_amount\":\"the reputation amount to vote with . if _amount == 0 it will use all voter reputation.\",\"_proposalId\":\"id of the proposal\",\"_vote\":\"a value between 0 to and the proposal number of choices.\",\"_voter\":\"voter address\"},\"return\":\"bool true - the proposal has been executed             false - otherwise.\"},\"voteInfo(bytes32,address)\":{\"details\":\"voteInfo returns the vote and the amount of reputation of the user committed to this proposal\",\"params\":{\"_proposalId\":\"the ID of the proposal\",\"_voter\":\"the address of the voter\"},\"return\":\"uint256 vote - the voters vote       uint256 reputation - amount of reputation committed by _voter to _proposalId\"},\"voteStatus(bytes32,uint256)\":{\"details\":\"voteStatus returns the reputation voted for a proposal for a specific voting choice.\",\"params\":{\"_choice\":\"the index in the\",\"_proposalId\":\"the ID of the proposal\"},\"return\":\"voted reputation for the given choice\"}}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"@daostack/infra/contracts/votingMachines/AbsoluteVote.sol\":\"AbsoluteVote\"},\"evmVersion\":\"byzantium\",\"libraries\":{},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[]},\"sources\":{\"@daostack/infra/contracts/Reputation.sol\":{\"keccak256\":\"0x3d226dac0fe7d758f0287fb28bc25fcec1f69d19888ae3a550fa49856d61c482\",\"urls\":[\"bzzr://7f219e1874d4f1aea860cc665b75015797f55f149e9bf490abab5d7ad2adfeb9\"]},\"@daostack/infra/contracts/votingMachines/AbsoluteVote.sol\":{\"keccak256\":\"0x5e6a9d2d70bd86115d82abc3b294672cddc7f49f0dbad93af28c5e0133a3586e\",\"urls\":[\"bzzr://18390bb9edc33902d8c3e9116796d8ace27bd42f1bbec6404d67ffe34a9f9b1f\"]},\"@daostack/infra/contracts/votingMachines/IntVoteInterface.sol\":{\"keccak256\":\"0x877991da94b1fe9c2accf69367b32fff474c4e4f7897e9cf5a61fa5d1378908f\",\"urls\":[\"bzzr://a7bb7b3a39a1553cb39378801976c8b192b801f9627098385eca24e62440826b\"]},\"@daostack/infra/contracts/votingMachines/ProposalExecuteInterface.sol\":{\"keccak256\":\"0xb80a153793e1723b35e70ba1c3800975fbc1fae63c989cfb8134a4e58085e181\",\"urls\":[\"bzzr://e5ff7e9f77e596fff366bb31326a7d2ca82d0fdeed1d612c09589eb9fb69d9bf\"]},\"@daostack/infra/contracts/votingMachines/VotingMachineCallbacksInterface.sol\":{\"keccak256\":\"0xec215d305f0aa5a5193b6f0302a1aa6bb84e85460167f80b261faf9d30564563\",\"urls\":[\"bzzr://baae21ef9ee3e315191aece7767d3a9ab62810aff5063ad144cb2120eebdabf0\"]},\"openzeppelin-solidity/contracts/math/SafeMath.sol\":{\"keccak256\":\"0x965012d27b4262d7a41f5028cbb30c51ebd9ecd4be8fb30380aaa7a3c64fbc8b\",\"urls\":[\"bzzr://41ca38f6b0fa4b77b0feec43e422cfbec48b7eb38a41edf0b85c77e8d9a296b1\"]},\"openzeppelin-solidity/contracts/ownership/Ownable.sol\":{\"keccak256\":\"0x980de387a1a020a498f53d00f89fecebb12c949a17e8f160093c0303ede2b786\",\"urls\":[\"bzzr://08894efa2a557982070beda6a81a032407e70532d24bdafe80d39660c74904d9\"]},\"openzeppelin-solidity/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0x079c4e23ee448f529e43bfa3c4e8fb4be52cd0318ee923a276835bedf45b93d8\",\"urls\":[\"bzzr://48248e86f64407a95f241d6c5c8cfea6b4d4ebf4ebb467e5c98c8af3868fafe4\"]}},\"version\":1}",
  "bytecode": "0x608060405234801561001057600080fd5b506110ae806100206000396000f3fe608060405234801561001057600080fd5b5060043610610128576000357c01000000000000000000000000000000000000000000000000000000009004806351d997b2116100bf578063a003651d1161008e578063a003651d14610337578063b451291314610354578063ba51b14e14610377578063c0835106146103b0578063e751f271146103cd57610128565b806351d997b2146102ce57806388737b5e146102d65780638d22651e146103105780639525c0cc1461031857610128565b8063289647e4116100fb578063289647e4146101f657806332ed5b1214610222578063359afa491461027a5780635142bc1e146102c657610128565b8063025068041461012d578063119ce91b1461016b57806321b4b3dc146101b057806323d840f5146101ca575b600080fd5b61014a6004803603602081101561014357600080fd5b50356103ea565b60408051928352600160a060020a0390911660208301528051918290030190f35b6101976004803603604081101561018157600080fd5b5080359060200135600160a060020a031661040c565b6040805192835260208301919091528051918290030190f35b6101b861045d565b60408051918252519081900360200190f35b6101b8600480360360408110156101e057600080fd5b5080359060200135600160a060020a0316610463565b6101b86004803603604081101561020c57600080fd5b5080359060200135600160a060020a03166104ee565b61023f6004803603602081101561023857600080fd5b5035610533565b604080519687529415156020870152600160a060020a03909316858501526060850191909152608084015260a0830152519081900360c00190f35b6102b26004803603608081101561029057600080fd5b5080359060208101359060408101359060600135600160a060020a0316610573565b604080519115158252519081900360200190f35b610197610622565b6102b261062a565b6101b8600480360360808110156102ec57600080fd5b50803590602081013590600160a060020a036040820135811691606001351661062f565b6101b8610891565b6103356004803603602081101561032e57600080fd5b5035610896565b005b6101b86004803603602081101561034d57600080fd5b50356108c7565b6101b86004803603604081101561036a57600080fd5b50803590602001356108dc565b6103946004803603602081101561038d57600080fd5b50356108fd565b60408051600160a060020a039092168252519081900360200190f35b6102b2600480360360208110156103c657600080fd5b5035610918565b6102b2600480360360208110156103e357600080fd5b5035610931565b60006020819052908152604090208054600190910154600160a060020a031682565b600080610417611036565b5050506000828152600160208181526040808420600160a060020a0386168552600601825292839020835180850190945280548085529201549201829052909250929050565b60035481565b6000606483111580156104765750600083115b151561048157600080fd5b600061048d84846104ee565b604080518082018252958652600160a060020a0394851660208088019182526000848152908190529190912095518655516001909501805473ffffffffffffffffffffffffffffffffffffffff191695909416949094179092555090919050565b60408051602080820194909452600160a060020a03929092166c0100000000000000000000000002828201528051808303603401815260549092019052805191012090565b60016020819052600091825260409091208054918101546002820154600383015460049093015460ff831693610100909304600160a060020a0316929086565b600084815260016020819052604082200154859060ff16151561059557600080fd5b60008681526001602052604090206105ab611036565b50600381015460009081526020818152604080832081518083019092528054825260010154600160a060020a0316918101829052919015610606576020820151600160a060020a031633146105ff57600080fd5b5084610609565b50335b61061589828a8a610965565b9998505050505050505050565b6000600a9091565b600190565b600083815260208190526040812054811061064957600080fd5b60008511801561065a5750600a8511155b151561066557600080fd5b600354604080516c01000000000000000000000000300260208083019190915260348083018590528351808403909101815260549092019092528051910120906106b690600163ffffffff610c0816565b6003556106c161104d565b606081018781526080820187815233604080850182815281516c01000000000000000000000000938402602082810191909152600160a060020a038b8116909502603483015283516028818403018152604890920184528151918101919091208752600181880181815260008a81528284528581208a5180825592519381018054965189166101000274ffffffffffffffffffffffffffffffffffffffff001995151560ff1990981697909717949094169590951790925596516002808501919091559551600384015560a0880151600490930192909255948152929093529190205416151561082457600160a060020a03841615156107ed5780516000908152600260205260409020805473ffffffffffffffffffffffffffffffffffffffff191633179055610824565b80516000908152600260205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386161790555b80516000908152600260209081526040918290205482518a815233928101929092528183018990529151600160a060020a039092169184917f75b4ff136cc5de5957574c797de3334eb1c141271922b825eb071e0487ba2c5c919081900360600190a35095945050505050565b600a81565b60008181526001602081905260409091200154819060ff1615156108b957600080fd5b6108c38233610c21565b5050565b60009081526001602052604090206002015490565b60009182526001602090815260408084209284526005909201905290205490565b600260205260009081526040902054600160a060020a031681565b6000908152600160208190526040909120015460ff1690565b600081815260016020819052604082200154829060ff16151561095357600080fd5b61095c83610d26565b91505b50919050565b6000848152600160205260408120600281015484111561098457600080fd5b6001810154604080517f9588378e000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152602482018a90529151600093610100900490921691639588378e91604480820192602092909190829003018186803b1580156109fb57600080fd5b505afa158015610a0f573d6000803e3d6000fd5b505050506040513d6020811015610a2557600080fd5b5051905060008111610a9857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5f766f746572206d75737420686176652072657075746174696f6e0000000000604482015290519081900360640190fd5b83811015610aa557600080fd5b83801515610ab05750805b600160a060020a038716600090815260068401602052604090206001015415610add57610add8888610c21565b6000868152600584016020526040902054610aff90829063ffffffff610c0816565b60008781526005850160205260409020556004830154610b2690829063ffffffff610c0816565b60048401556040805180820182528781526020808201848152600160a060020a03808c16600081815260068a0185528681209551865592516001909501949094558754825260028352908490205484518b8152928301869052845193949116928c927f066c061a3792cb3eb64a441a928655fcbafb4a54b49725fe9cd2951df5e7189e92908290030190a460408051600160a060020a0389163314158152905189917fe715e19c865cb724f3c292cc2fffc24d9cdd398e179fb366f008cc73028e1c52919081900360200190a2610bfc88610d26565b98975050505050505050565b600082820183811015610c1a57600080fd5b9392505050565b6000828152600160205260409020610c37611036565b50600160a060020a03821660009081526006820160209081526040808320815180830183528154808252600190920154818501819052918552600586019093529220549091610c8c919063ffffffff610fa516565b815160009081526005840160209081526040909120919091558101516004830154610cbc9163ffffffff610fa516565b6004830155600160a060020a03808416600081815260068501602090815260408083208381556001018390558654835260029091528082205490519293169187917f0ecab23267930de581498fac1af19a95c888ec6583921ee9c47473e16245d3c891a450505050565b600081815260016020819052604082200154829060ff161515610d4857600080fd5b60008381526001602081815260408084209283015481517fb551c373000000000000000000000000000000000000000000000000000000008152600481018990529151939493610100909104600160a060020a03169263b551c3739260248082019391829003018186803b158015610dbf57600080fd5b505afa158015610dd3573d6000803e3d6000fd5b505050506040513d6020811015610de957600080fd5b505160038301546000908152602081905260408120549192505b60028401548111610f985760008181526005850160205260409020546064840483021015610f9057610e3361104d565b506040805160c08101825285548152600186015460ff8116151560208301526101009004600160a060020a0316918101919091526002850154606082015260038501546080820152600485015460a0820152610e8e88610fba565b80516000908152600260209081526040918290205482518581529182018790528251600160a060020a03909116928b927f37471b9c9d295ffb1309ad070b8964700bfb7b555e8e8292d0b6cbc7dba35d10929081900390910190a38060400151600160a060020a0316639d4c162d89846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050602060405180830381600087803b158015610f5757600080fd5b505af1158015610f6b573d6000803e3d6000fd5b505050506040513d6020811015610f8157600080fd5b5051965061095f945050505050565b600101610e03565b5060009695505050505050565b600082821115610fb457600080fd5b50900390565b6000818152600160205260408120905b60028201548111610fee576000818152600583016020526040812055600101610fca565b505060009081526001602081905260408220828155908101805474ffffffffffffffffffffffffffffffffffffffffff19169055600281018290556003810182905560040155565b604080518082019091526000808252602082015290565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091529056fea165627a7a72305820ff1c11a11cf3590584d367a53dd17ef3cd7f6895bf5bac1795fcfe740f3889ed0029",
  "deployedBytecode": "0x608060405234801561001057600080fd5b5060043610610128576000357c01000000000000000000000000000000000000000000000000000000009004806351d997b2116100bf578063a003651d1161008e578063a003651d14610337578063b451291314610354578063ba51b14e14610377578063c0835106146103b0578063e751f271146103cd57610128565b806351d997b2146102ce57806388737b5e146102d65780638d22651e146103105780639525c0cc1461031857610128565b8063289647e4116100fb578063289647e4146101f657806332ed5b1214610222578063359afa491461027a5780635142bc1e146102c657610128565b8063025068041461012d578063119ce91b1461016b57806321b4b3dc146101b057806323d840f5146101ca575b600080fd5b61014a6004803603602081101561014357600080fd5b50356103ea565b60408051928352600160a060020a0390911660208301528051918290030190f35b6101976004803603604081101561018157600080fd5b5080359060200135600160a060020a031661040c565b6040805192835260208301919091528051918290030190f35b6101b861045d565b60408051918252519081900360200190f35b6101b8600480360360408110156101e057600080fd5b5080359060200135600160a060020a0316610463565b6101b86004803603604081101561020c57600080fd5b5080359060200135600160a060020a03166104ee565b61023f6004803603602081101561023857600080fd5b5035610533565b604080519687529415156020870152600160a060020a03909316858501526060850191909152608084015260a0830152519081900360c00190f35b6102b26004803603608081101561029057600080fd5b5080359060208101359060408101359060600135600160a060020a0316610573565b604080519115158252519081900360200190f35b610197610622565b6102b261062a565b6101b8600480360360808110156102ec57600080fd5b50803590602081013590600160a060020a036040820135811691606001351661062f565b6101b8610891565b6103356004803603602081101561032e57600080fd5b5035610896565b005b6101b86004803603602081101561034d57600080fd5b50356108c7565b6101b86004803603604081101561036a57600080fd5b50803590602001356108dc565b6103946004803603602081101561038d57600080fd5b50356108fd565b60408051600160a060020a039092168252519081900360200190f35b6102b2600480360360208110156103c657600080fd5b5035610918565b6102b2600480360360208110156103e357600080fd5b5035610931565b60006020819052908152604090208054600190910154600160a060020a031682565b600080610417611036565b5050506000828152600160208181526040808420600160a060020a0386168552600601825292839020835180850190945280548085529201549201829052909250929050565b60035481565b6000606483111580156104765750600083115b151561048157600080fd5b600061048d84846104ee565b604080518082018252958652600160a060020a0394851660208088019182526000848152908190529190912095518655516001909501805473ffffffffffffffffffffffffffffffffffffffff191695909416949094179092555090919050565b60408051602080820194909452600160a060020a03929092166c0100000000000000000000000002828201528051808303603401815260549092019052805191012090565b60016020819052600091825260409091208054918101546002820154600383015460049093015460ff831693610100909304600160a060020a0316929086565b600084815260016020819052604082200154859060ff16151561059557600080fd5b60008681526001602052604090206105ab611036565b50600381015460009081526020818152604080832081518083019092528054825260010154600160a060020a0316918101829052919015610606576020820151600160a060020a031633146105ff57600080fd5b5084610609565b50335b61061589828a8a610965565b9998505050505050505050565b6000600a9091565b600190565b600083815260208190526040812054811061064957600080fd5b60008511801561065a5750600a8511155b151561066557600080fd5b600354604080516c01000000000000000000000000300260208083019190915260348083018590528351808403909101815260549092019092528051910120906106b690600163ffffffff610c0816565b6003556106c161104d565b606081018781526080820187815233604080850182815281516c01000000000000000000000000938402602082810191909152600160a060020a038b8116909502603483015283516028818403018152604890920184528151918101919091208752600181880181815260008a81528284528581208a5180825592519381018054965189166101000274ffffffffffffffffffffffffffffffffffffffff001995151560ff1990981697909717949094169590951790925596516002808501919091559551600384015560a0880151600490930192909255948152929093529190205416151561082457600160a060020a03841615156107ed5780516000908152600260205260409020805473ffffffffffffffffffffffffffffffffffffffff191633179055610824565b80516000908152600260205260409020805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0386161790555b80516000908152600260209081526040918290205482518a815233928101929092528183018990529151600160a060020a039092169184917f75b4ff136cc5de5957574c797de3334eb1c141271922b825eb071e0487ba2c5c919081900360600190a35095945050505050565b600a81565b60008181526001602081905260409091200154819060ff1615156108b957600080fd5b6108c38233610c21565b5050565b60009081526001602052604090206002015490565b60009182526001602090815260408084209284526005909201905290205490565b600260205260009081526040902054600160a060020a031681565b6000908152600160208190526040909120015460ff1690565b600081815260016020819052604082200154829060ff16151561095357600080fd5b61095c83610d26565b91505b50919050565b6000848152600160205260408120600281015484111561098457600080fd5b6001810154604080517f9588378e000000000000000000000000000000000000000000000000000000008152600160a060020a038881166004830152602482018a90529151600093610100900490921691639588378e91604480820192602092909190829003018186803b1580156109fb57600080fd5b505afa158015610a0f573d6000803e3d6000fd5b505050506040513d6020811015610a2557600080fd5b5051905060008111610a9857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f5f766f746572206d75737420686176652072657075746174696f6e0000000000604482015290519081900360640190fd5b83811015610aa557600080fd5b83801515610ab05750805b600160a060020a038716600090815260068401602052604090206001015415610add57610add8888610c21565b6000868152600584016020526040902054610aff90829063ffffffff610c0816565b60008781526005850160205260409020556004830154610b2690829063ffffffff610c0816565b60048401556040805180820182528781526020808201848152600160a060020a03808c16600081815260068a0185528681209551865592516001909501949094558754825260028352908490205484518b8152928301869052845193949116928c927f066c061a3792cb3eb64a441a928655fcbafb4a54b49725fe9cd2951df5e7189e92908290030190a460408051600160a060020a0389163314158152905189917fe715e19c865cb724f3c292cc2fffc24d9cdd398e179fb366f008cc73028e1c52919081900360200190a2610bfc88610d26565b98975050505050505050565b600082820183811015610c1a57600080fd5b9392505050565b6000828152600160205260409020610c37611036565b50600160a060020a03821660009081526006820160209081526040808320815180830183528154808252600190920154818501819052918552600586019093529220549091610c8c919063ffffffff610fa516565b815160009081526005840160209081526040909120919091558101516004830154610cbc9163ffffffff610fa516565b6004830155600160a060020a03808416600081815260068501602090815260408083208381556001018390558654835260029091528082205490519293169187917f0ecab23267930de581498fac1af19a95c888ec6583921ee9c47473e16245d3c891a450505050565b600081815260016020819052604082200154829060ff161515610d4857600080fd5b60008381526001602081815260408084209283015481517fb551c373000000000000000000000000000000000000000000000000000000008152600481018990529151939493610100909104600160a060020a03169263b551c3739260248082019391829003018186803b158015610dbf57600080fd5b505afa158015610dd3573d6000803e3d6000fd5b505050506040513d6020811015610de957600080fd5b505160038301546000908152602081905260408120549192505b60028401548111610f985760008181526005850160205260409020546064840483021015610f9057610e3361104d565b506040805160c08101825285548152600186015460ff8116151560208301526101009004600160a060020a0316918101919091526002850154606082015260038501546080820152600485015460a0820152610e8e88610fba565b80516000908152600260209081526040918290205482518581529182018790528251600160a060020a03909116928b927f37471b9c9d295ffb1309ad070b8964700bfb7b555e8e8292d0b6cbc7dba35d10929081900390910190a38060400151600160a060020a0316639d4c162d89846040518363ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018083815260200182815260200192505050602060405180830381600087803b158015610f5757600080fd5b505af1158015610f6b573d6000803e3d6000fd5b505050506040513d6020811015610f8157600080fd5b5051965061095f945050505050565b600101610e03565b5060009695505050505050565b600082821115610fb457600080fd5b50900390565b6000818152600160205260408120905b60028201548111610fee576000818152600583016020526040812055600101610fca565b505060009081526001602081905260408220828155908101805474ffffffffffffffffffffffffffffffffffffffffff19169055600281018290556003810182905560040155565b604080518082019091526000808252602082015290565b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091529056fea165627a7a72305820ff1c11a11cf3590584d367a53dd17ef3cd7f6895bf5bac1795fcfe740f3889ed0029",
  "sourceMap": "237:11657:55:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;237:11657:55;;;;;;;",
  "deployedSourceMap": "237:11657:55:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;237:11657:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1146:46;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1146:46:55;;:::i;:::-;;;;;;;-1:-1:-1;;;;;1146:46:55;;;;;;;;;;;;;;;;5870:211;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5870:211:55;;;;;;-1:-1:-1;;;;;5870:211:55;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1456:27;;;:::i;:::-;;;;;;;;;;;;;;;;7433:392;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7433:392:55;;;;;;-1:-1:-1;;;;;7433:392:55;;:::i;7913:173::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7913:173:55;;;;;;-1:-1:-1;;;;;7913:173:55;;:::i;1238:43::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1238:43:55;;:::i;:::-;;;;;;;;;;;;;;-1:-1:-1;;;;;1238:43:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3813:608;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3813:608:55;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3813:608:55;;:::i;:::-;;;;;;;;;;;;;;;;;;7198:131;;;:::i;6904:82::-;;;:::i;2118:1282::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2118:1282:55;;;;;;;;-1:-1:-1;;;;;2118:1282:55;;;;;;;;;;;;:::i;1403:47::-;;;:::i;4624:131::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4624:131:55;;:::i;:::-;;5385:139;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5385:139:55;;:::i;6341:150::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6341:150:55;;;;;;;:::i;1350:46::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1350:46:55;;:::i;:::-;;;;-1:-1:-1;;;;;1350:46:55;;;;;;;;;;;;;;6653:120;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6653:120:55;;:::i;5019:127::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5019:127:55;;:::i;1146:46::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1146:46:55;;:::o;5870:211::-;5947:4;5953;5969:18;;:::i;:::-;-1:-1:-1;;;5990:22:55;;;;:9;:22;;;;;;;;-1:-1:-1;;;;;5990:37:55;;;;:29;;:37;;;;;;5969:58;;;;;;;;;;;;;;;;;;;;;;5870:211;;;;;:::o;1456:27::-;;;;:::o;7433:392::-;7512:7;7551:3;7539:8;:15;;:31;;;;;7569:1;7558:8;:12;7539:31;7531:40;;;;;;;;7581:24;7608:42;7626:8;7636:13;7608:17;:42::i;:::-;7691:94;;;;;;;;;;;-1:-1:-1;;;;;7691:94:55;;;;;;;;;;-1:-1:-1;7660:28:55;;;;;;;;;;;:125;;;;;;;;;;;-1:-1:-1;;7660:125:55;;;;;;;;;;;;-1:-1:-1;7660:28:55;;7433:392;-1:-1:-1;7433:392:55:o;7913:173::-;8037:41;;;;;;;;;;;-1:-1:-1;;;;;8037:41:55;;;;;;;;;;;;26:21:-1;;;22:32;;6:49;;8037:41:55;;;;;;8027:52;;;;;;7913:173::o;1238:43::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1238:43:55;;;;:::o;3813:608::-;3991:4;1660:22;;;:9;:22;;;;;;;:27;;3962:11;;1660:27;;1652:36;;;;;;;;4016:25;4044:22;;;:9;:22;;;;;4076:24;;:::i;:::-;-1:-1:-1;4114:19:55;;;;4103:10;:31;;;;;;;;;;;4076:58;;;;;;;;;;;;;;;-1:-1:-1;;;;;4076:58:55;;;;;;;;4103:10;4171:33;4167:183;;4242:19;;;;-1:-1:-1;;;;;4228:33:55;:10;:33;4220:42;;;;;;-1:-1:-1;4284:6:55;4167:183;;;-1:-1:-1;4329:10:55;4167:183;4366:48;4379:11;4392:5;4399;4406:7;4366:12;:48::i;:::-;4359:55;3813:608;-1:-1:-1;;;;;;;;;3813:608:55:o;7198:131::-;7256:11;1448:2;7198:131;;:::o;6904:82::-;6975:4;6904:82;:::o;2118:1282::-;2244:7;2328:23;;;;;;;;;;:31;:35;-1:-1:-1;2320:44:55;;;;;;2398:1;2382:13;:17;:56;;;;;1448:2;2403:13;:35;;2382:56;2374:65;;;;;;;;2536:12;;2513:36;;;;2530:4;2513:36;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2513:36:55;;;;;;;2503:47;;;;;;2575:19;;2592:1;2575:19;:16;:19;:::i;:::-;2560:12;:34;2630:24;;:::i;:::-;2664:21;;;:37;;;2711:19;;;:33;;;2775:10;2754:18;;;;:31;;;2831:43;;;;;;-1:-1:-1;2831:43:55;;;;;;;-1:-1:-1;;;;;2831:43:55;;;;;;;;;;;;22:32:-1;26:21;;;22:32;6:49;;2831:43:55;;;;;;2821:54;;;;;;;;;2795:80;;2901:4;2885:13;;;:20;;;-1:-1:-1;2915:21:55;;;;;;;;;:32;;;;;;;;;;;;;;;;;;-1:-1:-1;;2915:32:55;;;-1:-1:-1;;2915:32:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2961:38;;;;;;;;;;;;:52;2957:292;;;-1:-1:-1;;;;;3033:27:55;;;3029:210;;;3094:23;;3080:38;;;;:13;:38;;;;;:51;;-1:-1:-1;;3080:51:55;3121:10;3080:51;;;3029:210;;;3184:23;;3170:38;;;;:13;:38;;;;;:54;;-1:-1:-1;;3170:54:55;-1:-1:-1;;;;;3170:54:55;;;;;3029:210;3301:23;;3287:38;;;;:13;:38;;;;;;;;;;3263:103;;;;;3342:10;3263:103;;;;;;;;;;;;;;;-1:-1:-1;;;;;3287:38:55;;;;3275:10;;3263:103;;;;;;;;;;-1:-1:-1;3383:10:55;2118:1282;-1:-1:-1;;;;;2118:1282:55:o;1403:47::-;1448:2;1403:47;:::o;4624:131::-;1660:22;;;;:9;:22;;;;;;;;:27;;4682:11;;1660:27;;1652:36;;;;;;;;4705:43;4724:11;4737:10;4705:18;:43::i;:::-;4624:131;;:::o;5385:139::-;5456:7;5482:22;;;:9;:22;;;;;:35;;;;5385:139::o;6341:150::-;6421:7;6447:22;;;:9;:22;;;;;;;;:37;;;:28;;;;:37;;;;;;6341:150::o;1350:46::-;;;;;;;;;;;;-1:-1:-1;;;;;1350:46:55;;:::o;6653:120::-;6715:4;6739:22;;;:9;:22;;;;;;;;:27;;;;;6653:120::o;5019:127::-;5095:4;1660:22;;;:9;:22;;;;;;;:27;;5074:11;;1660:27;;1652:36;;;;;;;;5118:21;5127:11;5118:8;:21::i;:::-;5111:28;;1698:1;5019:127;;;;:::o;10554:1338::-;10659:4;10703:22;;;:9;:22;;;;;10781:21;;;;10772:30;;;10764:39;;;;;;10912:18;;;;10880:85;;;;;;-1:-1:-1;;;;;10880:85:55;;;;;;;;;;;;;;;-1:-1:-1;;10912:18:55;;;;;;;10880:64;;:85;;;;;;;;;;;;;;;10912:18;10880:85;;;5:2:-1;;;;30:1;27;20:12;5:2;10880:85:55;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;10880:85:55;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;10880:85:55;;-1:-1:-1;10996:1:55;10983:14;;10975:54;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11047:18;;;;11039:27;;;;;;11090:4;11108:8;;11104:55;;;-1:-1:-1;11138:10:55;11104:55;-1:-1:-1;;;;;11239:23:55;;;;;;:15;;;:23;;;;;:34;;;:39;11235:109;;11294:39;11313:11;11326:6;11294:18;:39::i;:::-;11415:21;;;;:14;;;:21;;;;;;11407:30;;:3;;:30;:7;:30;:::i;:::-;11383:21;;;;:14;;;:21;;;;;:54;11477:19;;;;11469:28;;:3;;:28;:7;:28;:::i;:::-;11447:19;;;:50;11533:71;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11507:23:55;;;-1:-1:-1;11507:23:55;;;:15;;;:23;;;;;:97;;;;;;;;;;;;;;11677:23;;11663:38;;:13;:38;;;;;;;11637:85;;;;;;;;;;;;;11507:23;;11663:38;;;11650:11;;11637:85;;;;;;;;;11737:51;;;-1:-1:-1;;;;;11766:20:55;;11776:10;11766:20;;11737:51;;;;11752:11;;11737:51;;;;;;;;;;11864:21;11873:11;11864:8;:21::i;:::-;11857:28;10554:1338;-1:-1:-1;;;;;;;;10554:1338:55:o;1431:145:67:-;1489:7;1520:5;;;1543:6;;;;1535:15;;;;;;1568:1;1431:145;-1:-1:-1;;;1431:145:67:o;8092:487:55:-;8176:25;8204:22;;;:9;:22;;;;;8236:18;;:::i;:::-;-1:-1:-1;;;;;;8257:23:55;;;;;;:15;;;:23;;;;;;;;8236:44;;;;;;;;;;;;;;;;;;;;;;;8320:26;;;:14;;;:26;;;;;;8236:44;;8319:50;;8320:26;8319:50;:32;:50;:::i;:::-;8305:10;;8290:26;;;;:14;;;:26;;;;;;;;:79;;;;8427:16;;;8402:19;;;;8401:43;;;:25;:43;:::i;:::-;8379:19;;;:65;-1:-1:-1;;;;;8461:23:55;;;;;;;:15;;;:23;;;;;;;;8454:30;;;;;;;;8539:23;;8525:38;;:13;:38;;;;;;;8499:73;;8461:23;;8525:38;;8512:11;;8499:73;;;8092:487;;;;:::o;9128:909::-;9205:4;1660:22;;;:9;:22;;;;;;;:27;;9184:11;;1660:27;;1652:36;;;;;;;;9221:25;9249:22;;;:9;:22;;;;;;;;9347:18;;;;9315:89;;;;;;;;;;;;;9249:22;;9221:25;9347:18;;;;-1:-1:-1;;;;;9347:18:55;;9315:76;;:89;;;;;;;;;;;9347:18;9315:89;;;5:2:-1;;;;30:1;27;20:12;5:2;9315:89:55;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9315:89:55;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9315:89:55;9443:19;;;;9414:15;9432:31;;;9315:89;9432:31;;;;;;:39;9315:89;;-1:-1:-1;9526:483:55;9555:21;;;;9548:28;;9526:483;;9603:19;;;;:14;;;:19;;;;;;9642:3;9626:19;;9625:29;;-1:-1:-1;9599:400:55;;;9674:27;;:::i;:::-;-1:-1:-1;9674:38:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9674:38:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9730:27;9745:11;9730:14;:27::i;:::-;9823:26;;9809:41;;;;:13;:41;;;;;;;;;;9780:93;;;;;;;;;;;;;-1:-1:-1;;;;;9809:41:55;;;;9796:11;;9780:93;;;;;;;;;;;9923:11;:21;;;-1:-1:-1;;;;;9898:63:55;;9962:11;9979:3;9898:86;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9898:86:55;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9898:86:55;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;9898:86:55;;-1:-1:-1;9891:93:55;;-1:-1:-1;;;;;9891:93:55;9599:400;9578:5;;9526:483;;;-1:-1:-1;10025:5:55;;9128:909;-1:-1:-1;;;;;;9128:909:55:o;1205:145:67:-;1263:7;1290:6;;;;1282:15;;;;;;-1:-1:-1;1319:5:67;;;1205:145::o;8585:279:55:-;8649:25;8677:22;;;:9;:22;;;;;;8709:110;8738:21;;;;8731:28;;8709:110;;8789:19;;;;:14;;;:19;;;;;8782:26;8761:5;;8709:110;;;-1:-1:-1;;8835:22:55;;;;:9;:22;;;;;;;8828:29;;;;;;;;-1:-1:-1;;8828:29:55;;;;;;;;;;;;;;;;;;8585:279::o;237:11657::-;;;;;;;;;;-1:-1:-1;237:11657:55;;;;;;;;:::o;:::-;;;;;;;;;-1:-1:-1;237:11657:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o",
  "source": "pragma solidity ^0.5.4;\n\nimport \"../Reputation.sol\";\nimport \"./IntVoteInterface.sol\";\nimport \"openzeppelin-solidity/contracts/math/SafeMath.sol\";\nimport \"./VotingMachineCallbacksInterface.sol\";\nimport \"./ProposalExecuteInterface.sol\";\n\n\ncontract AbsoluteVote is IntVoteInterface {\n    using SafeMath for uint;\n\n    struct Parameters {\n        uint256 precReq; // how many percentages required for the proposal to be passed\n        address voteOnBehalf; //if this address is set so only this address is allowed\n                              // to vote of behalf of someone else.\n    }\n\n    struct Voter {\n        uint256 vote; // 0 - 'abstain'\n        uint256 reputation; // amount of voter's reputation\n    }\n\n    struct Proposal {\n        bytes32 organizationId; // the organization Id\n        bool open; // voting open flag\n        address callbacks;\n        uint256 numOfChoices;\n        bytes32 paramsHash; // the hash of the parameters of the proposal\n        uint256 totalVotes;\n        mapping(uint=>uint) votes;\n        mapping(address=>Voter) voters;\n    }\n\n    event AVVoteProposal(bytes32 indexed _proposalId, bool _isProxyVote);\n\n    mapping(bytes32=>Parameters) public parameters;  // A mapping from hashes to parameters\n    mapping(bytes32=>Proposal) public proposals; // Mapping from the ID of the proposal to the proposal itself.\n    mapping(bytes32=>address) public organizations;\n\n    uint256 public constant MAX_NUM_OF_CHOICES = 10;\n    uint256 public proposalsCnt; // Total amount of proposals\n\n  /**\n   * @dev Check that the proposal is votable (open and not executed yet)\n   */\n    modifier votable(bytes32 _proposalId) {\n        require(proposals[_proposalId].open);\n        _;\n    }\n\n    /**\n     * @dev register a new proposal with the given parameters. Every proposal has a unique ID which is being\n     * generated by calculating keccak256 of a incremented counter.\n     * @param _numOfChoices number of voting choices\n     * @param _paramsHash defined the parameters of the voting machine used for this proposal\n     * @param _organization address\n     * @return proposal's id.\n     */\n    function propose(uint256 _numOfChoices, bytes32 _paramsHash, address, address _organization)\n        external\n        returns(bytes32)\n    {\n        // Check valid params and number of choices:\n        require(parameters[_paramsHash].precReq > 0);\n        require(_numOfChoices > 0 && _numOfChoices <= MAX_NUM_OF_CHOICES);\n        // Generate a unique ID:\n        bytes32 proposalId = keccak256(abi.encodePacked(this, proposalsCnt));\n        proposalsCnt = proposalsCnt.add(1);\n        // Open proposal:\n        Proposal memory proposal;\n        proposal.numOfChoices = _numOfChoices;\n        proposal.paramsHash = _paramsHash;\n        proposal.callbacks = msg.sender;\n        proposal.organizationId = keccak256(abi.encodePacked(msg.sender, _organization));\n        proposal.open = true;\n        proposals[proposalId] = proposal;\n        if (organizations[proposal.organizationId] == address(0)) {\n            if (_organization == address(0)) {\n                organizations[proposal.organizationId] = msg.sender;\n            } else {\n                organizations[proposal.organizationId] = _organization;\n            }\n        }\n        emit NewProposal(proposalId, organizations[proposal.organizationId], _numOfChoices, msg.sender, _paramsHash);\n        return proposalId;\n    }\n\n    /**\n     * @dev voting function\n     * @param _proposalId id of the proposal\n     * @param _vote a value between 0 to and the proposal number of choices.\n     * @param _amount the reputation amount to vote with . if _amount == 0 it will use all voter reputation.\n     * @param _voter voter address\n     * @return bool true - the proposal has been executed\n     *              false - otherwise.\n     */\n    function vote(\n        bytes32 _proposalId,\n        uint256 _vote,\n        uint256 _amount,\n        address _voter)\n        external\n        votable(_proposalId)\n        returns(bool)\n        {\n\n        Proposal storage proposal = proposals[_proposalId];\n        Parameters memory params = parameters[proposal.paramsHash];\n        address voter;\n        if (params.voteOnBehalf != address(0)) {\n            require(msg.sender == params.voteOnBehalf);\n            voter = _voter;\n        } else {\n            voter = msg.sender;\n        }\n        return internalVote(_proposalId, voter, _vote, _amount);\n    }\n\n  /**\n   * @dev Cancel the vote of the msg.sender: subtract the reputation amount from the votes\n   * and delete the voter from the proposal struct\n   * @param _proposalId id of the proposal\n   */\n    function cancelVote(bytes32 _proposalId) external votable(_proposalId) {\n        cancelVoteInternal(_proposalId, msg.sender);\n    }\n\n    /**\n      * @dev execute check if the proposal has been decided, and if so, execute the proposal\n      * @param _proposalId the id of the proposal\n      * @return bool true - the proposal has been executed\n      *              false - otherwise.\n     */\n    function execute(bytes32 _proposalId) external votable(_proposalId) returns(bool) {\n        return _execute(_proposalId);\n    }\n\n  /**\n   * @dev getNumberOfChoices returns the number of choices possible in this proposal\n   * excluding the abstain vote (0)\n   * @param _proposalId the ID of the proposal\n   * @return uint256 that contains number of choices\n   */\n    function getNumberOfChoices(bytes32 _proposalId) external view returns(uint256) {\n        return proposals[_proposalId].numOfChoices;\n    }\n\n  /**\n   * @dev voteInfo returns the vote and the amount of reputation of the user committed to this proposal\n   * @param _proposalId the ID of the proposal\n   * @param _voter the address of the voter\n   * @return uint256 vote - the voters vote\n   *        uint256 reputation - amount of reputation committed by _voter to _proposalId\n   */\n    function voteInfo(bytes32 _proposalId, address _voter) external view returns(uint, uint) {\n        Voter memory voter = proposals[_proposalId].voters[_voter];\n        return (voter.vote, voter.reputation);\n    }\n\n    /**\n     * @dev voteStatus returns the reputation voted for a proposal for a specific voting choice.\n     * @param _proposalId the ID of the proposal\n     * @param _choice the index in the\n     * @return voted reputation for the given choice\n     */\n    function voteStatus(bytes32 _proposalId, uint256 _choice) external view returns(uint256) {\n        return proposals[_proposalId].votes[_choice];\n    }\n\n    /**\n      * @dev isVotable check if the proposal is votable\n      * @param _proposalId the ID of the proposal\n      * @return bool true or false\n    */\n    function isVotable(bytes32 _proposalId) external view returns(bool) {\n        return  proposals[_proposalId].open;\n    }\n\n    /**\n     * @dev isAbstainAllow returns if the voting machine allow abstain (0)\n     * @return bool true or false\n     */\n    function isAbstainAllow() external pure returns(bool) {\n        return true;\n    }\n\n    /**\n     * @dev getAllowedRangeOfChoices returns the allowed range of choices for a voting machine.\n     * @return min - minimum number of choices\n               max - maximum number of choices\n     */\n    function getAllowedRangeOfChoices() external pure returns(uint256 min, uint256 max) {\n        return (0, MAX_NUM_OF_CHOICES);\n    }\n\n    /**\n     * @dev hash the parameters, save them if necessary, and return the hash value\n    */\n    function setParameters(uint256 _precReq, address _voteOnBehalf) public returns(bytes32) {\n        require(_precReq <= 100 && _precReq > 0);\n        bytes32 hashedParameters = getParametersHash(_precReq, _voteOnBehalf);\n        parameters[hashedParameters] = Parameters({\n            precReq: _precReq,\n            voteOnBehalf: _voteOnBehalf\n        });\n        return hashedParameters;\n    }\n\n    /**\n     * @dev hashParameters returns a hash of the given parameters\n     */\n    function getParametersHash(uint256 _precReq, address _voteOnBehalf) public pure returns(bytes32) {\n        return keccak256(abi.encodePacked(_precReq, _voteOnBehalf));\n    }\n\n    function cancelVoteInternal(bytes32 _proposalId, address _voter) internal {\n        Proposal storage proposal = proposals[_proposalId];\n        Voter memory voter = proposal.voters[_voter];\n        proposal.votes[voter.vote] = (proposal.votes[voter.vote]).sub(voter.reputation);\n        proposal.totalVotes = (proposal.totalVotes).sub(voter.reputation);\n        delete proposal.voters[_voter];\n        emit CancelVoting(_proposalId, organizations[proposal.organizationId], _voter);\n    }\n\n    function deleteProposal(bytes32 _proposalId) internal {\n        Proposal storage proposal = proposals[_proposalId];\n        for (uint256 cnt = 0; cnt <= proposal.numOfChoices; cnt++) {\n            delete proposal.votes[cnt];\n        }\n        delete proposals[_proposalId];\n    }\n\n    /**\n      * @dev execute check if the proposal has been decided, and if so, execute the proposal\n      * @param _proposalId the id of the proposal\n      * @return bool true - the proposal has been executed\n      *              false - otherwise.\n     */\n    function _execute(bytes32 _proposalId) internal votable(_proposalId) returns(bool) {\n        Proposal storage proposal = proposals[_proposalId];\n        uint256 totalReputation =\n        VotingMachineCallbacksInterface(proposal.callbacks).getTotalReputationSupply(_proposalId);\n        uint256 precReq = parameters[proposal.paramsHash].precReq;\n        // Check if someone crossed the bar:\n        for (uint256 cnt = 0; cnt <= proposal.numOfChoices; cnt++) {\n            if (proposal.votes[cnt] > (totalReputation/100)*precReq) {\n                Proposal memory tmpProposal = proposal;\n                deleteProposal(_proposalId);\n                emit ExecuteProposal(_proposalId, organizations[tmpProposal.organizationId], cnt, totalReputation);\n                return ProposalExecuteInterface(tmpProposal.callbacks).executeProposal(_proposalId, int(cnt));\n            }\n        }\n        return false;\n    }\n\n    /**\n     * @dev Vote for a proposal, if the voter already voted, cancel the last vote and set a new one instead\n     * @param _proposalId id of the proposal\n     * @param _voter used in case the vote is cast for someone else\n     * @param _vote a value between 0 to and the proposal's number of choices.\n     * @return true in case of proposal execution otherwise false\n     * throws if proposal is not open or if it has been executed\n     * NB: executes the proposal if a decision has been reached\n     */\n    function internalVote(bytes32 _proposalId, address _voter, uint256 _vote, uint256 _rep) internal returns(bool) {\n        Proposal storage proposal = proposals[_proposalId];\n        // Check valid vote:\n        require(_vote <= proposal.numOfChoices);\n        // Check voter has enough reputation:\n        uint256 reputation = VotingMachineCallbacksInterface(proposal.callbacks).reputationOf(_voter, _proposalId);\n        require(reputation > 0, \"_voter must have reputation\");\n        require(reputation >= _rep);\n        uint256 rep = _rep;\n        if (rep == 0) {\n            rep = reputation;\n        }\n        // If this voter has already voted, first cancel the vote:\n        if (proposal.voters[_voter].reputation != 0) {\n            cancelVoteInternal(_proposalId, _voter);\n        }\n        // The voting itself:\n        proposal.votes[_vote] = rep.add(proposal.votes[_vote]);\n        proposal.totalVotes = rep.add(proposal.totalVotes);\n        proposal.voters[_voter] = Voter({\n            reputation: rep,\n            vote: _vote\n        });\n        // Event:\n        emit VoteProposal(_proposalId, organizations[proposal.organizationId], _voter, _vote, rep);\n        emit AVVoteProposal(_proposalId, (_voter != msg.sender));\n        // execute the proposal if this vote was decisive:\n        return _execute(_proposalId);\n    }\n}\n",
  "sourcePath": "@daostack/infra/contracts/votingMachines/AbsoluteVote.sol",
  "ast": {
    "absolutePath": "@daostack/infra/contracts/votingMachines/AbsoluteVote.sol",
    "exportedSymbols": {
      "AbsoluteVote": [
        11985
      ]
    },
    "id": 11986,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11190,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:55"
      },
      {
        "absolutePath": "@daostack/infra/contracts/Reputation.sol",
        "file": "../Reputation.sol",
        "id": 11191,
        "nodeType": "ImportDirective",
        "scope": 11986,
        "sourceUnit": 11035,
        "src": "25:27:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/IntVoteInterface.sol",
        "file": "./IntVoteInterface.sol",
        "id": 11192,
        "nodeType": "ImportDirective",
        "scope": 11986,
        "sourceUnit": 15183,
        "src": "53:32:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 11193,
        "nodeType": "ImportDirective",
        "scope": 11986,
        "sourceUnit": 15920,
        "src": "86:59:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/VotingMachineCallbacksInterface.sol",
        "file": "./VotingMachineCallbacksInterface.sol",
        "id": 11194,
        "nodeType": "ImportDirective",
        "scope": 11986,
        "sourceUnit": 15259,
        "src": "146:47:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/ProposalExecuteInterface.sol",
        "file": "./ProposalExecuteInterface.sol",
        "id": 11195,
        "nodeType": "ImportDirective",
        "scope": 11986,
        "sourceUnit": 15195,
        "src": "194:40:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11196,
              "name": "IntVoteInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15182,
              "src": "262:16:55",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IntVoteInterface_$15182",
                "typeString": "contract IntVoteInterface"
              }
            },
            "id": 11197,
            "nodeType": "InheritanceSpecifier",
            "src": "262:16:55"
          }
        ],
        "contractDependencies": [
          15182
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 11985,
        "linearizedBaseContracts": [
          11985,
          15182
        ],
        "name": "AbsoluteVote",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 11200,
            "libraryName": {
              "contractScope": null,
              "id": 11198,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15919,
              "src": "291:8:55",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$15919",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "285:24:55",
            "typeName": {
              "id": 11199,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "304:4:55",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "canonicalName": "AbsoluteVote.Parameters",
            "id": 11205,
            "members": [
              {
                "constant": false,
                "id": 11202,
                "name": "precReq",
                "nodeType": "VariableDeclaration",
                "scope": 11205,
                "src": "343:15:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 11201,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "343:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11204,
                "name": "voteOnBehalf",
                "nodeType": "VariableDeclaration",
                "scope": 11205,
                "src": "431:20:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 11203,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "431:7:55",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Parameters",
            "nodeType": "StructDefinition",
            "scope": 11985,
            "src": "315:268:55",
            "visibility": "public"
          },
          {
            "canonicalName": "AbsoluteVote.Voter",
            "id": 11210,
            "members": [
              {
                "constant": false,
                "id": 11207,
                "name": "vote",
                "nodeType": "VariableDeclaration",
                "scope": 11210,
                "src": "612:12:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 11206,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "612:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11209,
                "name": "reputation",
                "nodeType": "VariableDeclaration",
                "scope": 11210,
                "src": "651:18:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 11208,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "651:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Voter",
            "nodeType": "StructDefinition",
            "scope": 11985,
            "src": "589:119:55",
            "visibility": "public"
          },
          {
            "canonicalName": "AbsoluteVote.Proposal",
            "id": 11231,
            "members": [
              {
                "constant": false,
                "id": 11212,
                "name": "organizationId",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "740:22:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 11211,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "740:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11214,
                "name": "open",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "795:9:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 11213,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "795:4:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11216,
                "name": "callbacks",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "834:17:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 11215,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "834:7:55",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11218,
                "name": "numOfChoices",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "861:20:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 11217,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "861:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11220,
                "name": "paramsHash",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "891:18:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 11219,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "891:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11222,
                "name": "totalVotes",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "965:18:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 11221,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "965:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11226,
                "name": "votes",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "993:25:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 11225,
                  "keyType": {
                    "id": 11223,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1001:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "993:19:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 11224,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1007:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11230,
                "name": "voters",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "1028:30:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$11210_storage_$",
                  "typeString": "mapping(address => struct AbsoluteVote.Voter)"
                },
                "typeName": {
                  "id": 11229,
                  "keyType": {
                    "id": 11227,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1036:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1028:23:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$11210_storage_$",
                    "typeString": "mapping(address => struct AbsoluteVote.Voter)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 11228,
                    "name": "Voter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11210,
                    "src": "1045:5:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$11210_storage_ptr",
                      "typeString": "struct AbsoluteVote.Voter"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Proposal",
            "nodeType": "StructDefinition",
            "scope": 11985,
            "src": "714:351:55",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 11237,
            "name": "AVVoteProposal",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 11236,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11233,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11237,
                  "src": "1092:27:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11232,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1092:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11235,
                  "indexed": false,
                  "name": "_isProxyVote",
                  "nodeType": "VariableDeclaration",
                  "scope": 11237,
                  "src": "1121:17:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11234,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1121:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1091:48:55"
            },
            "src": "1071:69:55"
          },
          {
            "constant": false,
            "id": 11241,
            "name": "parameters",
            "nodeType": "VariableDeclaration",
            "scope": 11985,
            "src": "1146:46:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$11205_storage_$",
              "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters)"
            },
            "typeName": {
              "id": 11240,
              "keyType": {
                "id": 11238,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1154:7:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1146:28:55",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$11205_storage_$",
                "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters)"
              },
              "valueType": {
                "contractScope": null,
                "id": 11239,
                "name": "Parameters",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 11205,
                "src": "1163:10:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Parameters_$11205_storage_ptr",
                  "typeString": "struct AbsoluteVote.Parameters"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 11245,
            "name": "proposals",
            "nodeType": "VariableDeclaration",
            "scope": 11985,
            "src": "1238:43:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
              "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal)"
            },
            "typeName": {
              "id": 11244,
              "keyType": {
                "id": 11242,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1246:7:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1238:26:55",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal)"
              },
              "valueType": {
                "contractScope": null,
                "id": 11243,
                "name": "Proposal",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 11231,
                "src": "1255:8:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                  "typeString": "struct AbsoluteVote.Proposal"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 11249,
            "name": "organizations",
            "nodeType": "VariableDeclaration",
            "scope": 11985,
            "src": "1350:46:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 11248,
              "keyType": {
                "id": 11246,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1358:7:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1350:25:55",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 11247,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1367:7:55",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 11252,
            "name": "MAX_NUM_OF_CHOICES",
            "nodeType": "VariableDeclaration",
            "scope": 11985,
            "src": "1403:47:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11250,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1403:7:55",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3130",
              "id": 11251,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1448:2:55",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_10_by_1",
                "typeString": "int_const 10"
              },
              "value": "10"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 11254,
            "name": "proposalsCnt",
            "nodeType": "VariableDeclaration",
            "scope": 11985,
            "src": "1456:27:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11253,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1456:7:55",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11266,
              "nodeType": "Block",
              "src": "1642:64:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 11259,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11245,
                            "src": "1660:9:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                              "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                            }
                          },
                          "id": 11261,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 11260,
                            "name": "_proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11256,
                            "src": "1670:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1660:22:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                            "typeString": "struct AbsoluteVote.Proposal storage ref"
                          }
                        },
                        "id": 11262,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "open",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11214,
                        "src": "1660:27:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 11258,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "1652:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 11263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1652:36:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11264,
                  "nodeType": "ExpressionStatement",
                  "src": "1652:36:55"
                },
                {
                  "id": 11265,
                  "nodeType": "PlaceholderStatement",
                  "src": "1698:1:55"
                }
              ]
            },
            "documentation": "@dev Check that the proposal is votable (open and not executed yet)",
            "id": 11267,
            "name": "votable",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 11257,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11256,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11267,
                  "src": "1621:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11255,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1621:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1620:21:55"
            },
            "src": "1604:102:55",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11410,
              "nodeType": "Block",
              "src": "2257:1143:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 11286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11281,
                              "name": "parameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11241,
                              "src": "2328:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$11205_storage_$",
                                "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                              }
                            },
                            "id": 11283,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11282,
                              "name": "_paramsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11271,
                              "src": "2339:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2328:23:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Parameters_$11205_storage",
                              "typeString": "struct AbsoluteVote.Parameters storage ref"
                            }
                          },
                          "id": 11284,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "precReq",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11202,
                          "src": "2328:31:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2362:1:55",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2328:35:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 11280,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "2320:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 11287,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2320:44:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11288,
                  "nodeType": "ExpressionStatement",
                  "src": "2320:44:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 11296,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11290,
                            "name": "_numOfChoices",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11269,
                            "src": "2382:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2398:1:55",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2382:17:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11293,
                            "name": "_numOfChoices",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11269,
                            "src": "2403:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11294,
                            "name": "MAX_NUM_OF_CHOICES",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11252,
                            "src": "2420:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2403:35:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2382:56:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 11289,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "2374:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 11297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2374:65:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11298,
                  "nodeType": "ExpressionStatement",
                  "src": "2374:65:55"
                },
                {
                  "assignments": [
                    11300
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11300,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 11410,
                      "src": "2482:18:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11299,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2482:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11308,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11304,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16852,
                            "src": "2530:4:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AbsoluteVote_$11985",
                              "typeString": "contract AbsoluteVote"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11305,
                            "name": "proposalsCnt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11254,
                            "src": "2536:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AbsoluteVote_$11985",
                              "typeString": "contract AbsoluteVote"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 11302,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16769,
                            "src": "2513:3:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 11303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2513:16:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 11306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2513:36:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 11301,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16776,
                      "src": "2503:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 11307,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2503:47:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2482:68:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 11309,
                      "name": "proposalsCnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11254,
                      "src": "2560:12:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 11312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2592:1:55",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 11310,
                          "name": "proposalsCnt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11254,
                          "src": "2575:12:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "2575:16:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 11313,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2575:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2560:34:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11315,
                  "nodeType": "ExpressionStatement",
                  "src": "2560:34:55"
                },
                {
                  "assignments": [
                    11317
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11317,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 11410,
                      "src": "2630:24:55",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11316,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11231,
                        "src": "2630:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11318,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2630:24:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11319,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11317,
                        "src": "2664:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 11321,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "numOfChoices",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11218,
                      "src": "2664:21:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 11322,
                      "name": "_numOfChoices",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11269,
                      "src": "2688:13:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2664:37:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11324,
                  "nodeType": "ExpressionStatement",
                  "src": "2664:37:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11325,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11317,
                        "src": "2711:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 11327,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11220,
                      "src": "2711:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 11328,
                      "name": "_paramsHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11271,
                      "src": "2733:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2711:33:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 11330,
                  "nodeType": "ExpressionStatement",
                  "src": "2711:33:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11331,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11317,
                        "src": "2754:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 11333,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "callbacks",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11216,
                      "src": "2754:18:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11334,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16782,
                        "src": "2775:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 11335,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2775:10:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2754:31:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 11337,
                  "nodeType": "ExpressionStatement",
                  "src": "2754:31:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11338,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11317,
                        "src": "2795:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 11340,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "organizationId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11212,
                      "src": "2795:23:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11344,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16782,
                                "src": "2848:3:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 11345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2848:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11346,
                              "name": "_organization",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11275,
                              "src": "2860:13:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 11342,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16769,
                              "src": "2831:3:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 11343,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2831:16:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 11347,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2831:43:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 11341,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16776,
                        "src": "2821:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 11348,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2821:54:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2795:80:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 11350,
                  "nodeType": "ExpressionStatement",
                  "src": "2795:80:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11355,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11351,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11317,
                        "src": "2885:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 11353,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "open",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11214,
                      "src": "2885:13:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 11354,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2901:4:55",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2885:20:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11356,
                  "nodeType": "ExpressionStatement",
                  "src": "2885:20:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11361,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11357,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11245,
                        "src": "2915:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 11359,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11358,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11300,
                        "src": "2925:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2915:21:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 11360,
                      "name": "proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11317,
                      "src": "2939:8:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                        "typeString": "struct AbsoluteVote.Proposal memory"
                      }
                    },
                    "src": "2915:32:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "id": 11362,
                  "nodeType": "ExpressionStatement",
                  "src": "2915:32:55"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 11370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11363,
                        "name": "organizations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11249,
                        "src": "2961:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 11366,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11364,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11317,
                          "src": "2975:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                            "typeString": "struct AbsoluteVote.Proposal memory"
                          }
                        },
                        "id": 11365,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "organizationId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11212,
                        "src": "2975:23:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2961:38:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3011:1:55",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 11367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3003:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 11369,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3003:10:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2961:52:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11395,
                  "nodeType": "IfStatement",
                  "src": "2957:292:55",
                  "trueBody": {
                    "id": 11394,
                    "nodeType": "Block",
                    "src": "3015:234:55",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 11375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11371,
                            "name": "_organization",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11275,
                            "src": "3033:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3058:1:55",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 11372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3050:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 11374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3050:10:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "3033:27:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 11392,
                          "nodeType": "Block",
                          "src": "3152:87:55",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11385,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11249,
                                    "src": "3170:13:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 11388,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11386,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11317,
                                      "src": "3184:8:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                                        "typeString": "struct AbsoluteVote.Proposal memory"
                                      }
                                    },
                                    "id": 11387,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 11212,
                                    "src": "3184:23:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3170:38:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 11389,
                                  "name": "_organization",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11275,
                                  "src": "3211:13:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3170:54:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 11391,
                              "nodeType": "ExpressionStatement",
                              "src": "3170:54:55"
                            }
                          ]
                        },
                        "id": 11393,
                        "nodeType": "IfStatement",
                        "src": "3029:210:55",
                        "trueBody": {
                          "id": 11384,
                          "nodeType": "Block",
                          "src": "3062:84:55",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11376,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11249,
                                    "src": "3080:13:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 11379,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11377,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11317,
                                      "src": "3094:8:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                                        "typeString": "struct AbsoluteVote.Proposal memory"
                                      }
                                    },
                                    "id": 11378,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 11212,
                                    "src": "3094:23:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3080:38:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11380,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16782,
                                    "src": "3121:3:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 11381,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3121:10:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "3080:51:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 11383,
                              "nodeType": "ExpressionStatement",
                              "src": "3080:51:55"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11397,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11300,
                        "src": "3275:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11398,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11249,
                          "src": "3287:13:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 11401,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11399,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11317,
                            "src": "3301:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                              "typeString": "struct AbsoluteVote.Proposal memory"
                            }
                          },
                          "id": 11400,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11212,
                          "src": "3301:23:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3287:38:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11402,
                        "name": "_numOfChoices",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11269,
                        "src": "3327:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11403,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16782,
                          "src": "3342:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 11404,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3342:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11405,
                        "name": "_paramsHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11271,
                        "src": "3354:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 11396,
                      "name": "NewProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15079,
                      "src": "3263:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,address,uint256,address,bytes32)"
                      }
                    },
                    "id": 11406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3263:103:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11407,
                  "nodeType": "EmitStatement",
                  "src": "3258:108:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11408,
                    "name": "proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11300,
                    "src": "3383:10:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11279,
                  "id": 11409,
                  "nodeType": "Return",
                  "src": "3376:17:55"
                }
              ]
            },
            "documentation": "@dev register a new proposal with the given parameters. Every proposal has a unique ID which is being\ngenerated by calculating keccak256 of a incremented counter.\n@param _numOfChoices number of voting choices\n@param _paramsHash defined the parameters of the voting machine used for this proposal\n@param _organization address\n@return proposal's id.",
            "id": 11411,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "propose",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11276,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11269,
                  "name": "_numOfChoices",
                  "nodeType": "VariableDeclaration",
                  "scope": 11411,
                  "src": "2135:21:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11268,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2135:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11271,
                  "name": "_paramsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 11411,
                  "src": "2158:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11270,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2158:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11273,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11411,
                  "src": "2179:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11272,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2179:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11275,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 11411,
                  "src": "2188:21:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11274,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2188:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2134:76:55"
            },
            "returnParameters": {
              "id": 11279,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11278,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11411,
                  "src": "2244:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11277,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2244:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2243:9:55"
            },
            "scope": 11985,
            "src": "2118:1282:55",
            "stateMutability": "nonpayable",
            "superFunction": 15128,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11476,
              "nodeType": "Block",
              "src": "4005:416:55",
              "statements": [
                {
                  "assignments": [
                    11428
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11428,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 11476,
                      "src": "4016:25:55",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11427,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11231,
                        "src": "4016:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11432,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11429,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11245,
                      "src": "4044:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 11431,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11430,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11413,
                      "src": "4054:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4044:22:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4016:50:55"
                },
                {
                  "assignments": [
                    11434
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11434,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 11476,
                      "src": "4076:24:55",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$11205_memory_ptr",
                        "typeString": "struct AbsoluteVote.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11433,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11205,
                        "src": "4076:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$11205_storage_ptr",
                          "typeString": "struct AbsoluteVote.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11439,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11435,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11241,
                      "src": "4103:10:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$11205_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                      }
                    },
                    "id": 11438,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11436,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11428,
                        "src": "4114:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 11437,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11220,
                      "src": "4114:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4103:31:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$11205_storage",
                      "typeString": "struct AbsoluteVote.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4076:58:55"
                },
                {
                  "assignments": [
                    11441
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11441,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 11476,
                      "src": "4144:13:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11440,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4144:7:55",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11442,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4144:13:55"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 11448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11443,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11434,
                        "src": "4171:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$11205_memory_ptr",
                          "typeString": "struct AbsoluteVote.Parameters memory"
                        }
                      },
                      "id": 11444,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voteOnBehalf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11204,
                      "src": "4171:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4202:1:55",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 11445,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4194:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 11447,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4194:10:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "4171:33:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 11467,
                    "nodeType": "Block",
                    "src": "4307:43:55",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11462,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11441,
                            "src": "4321:5:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11463,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16782,
                              "src": "4329:3:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 11464,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4329:10:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4321:18:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11466,
                        "nodeType": "ExpressionStatement",
                        "src": "4321:18:55"
                      }
                    ]
                  },
                  "id": 11468,
                  "nodeType": "IfStatement",
                  "src": "4167:183:55",
                  "trueBody": {
                    "id": 11461,
                    "nodeType": "Block",
                    "src": "4206:95:55",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 11454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11450,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16782,
                                  "src": "4228:3:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 11451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4228:10:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11452,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11434,
                                  "src": "4242:6:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Parameters_$11205_memory_ptr",
                                    "typeString": "struct AbsoluteVote.Parameters memory"
                                  }
                                },
                                "id": 11453,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "voteOnBehalf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11204,
                                "src": "4242:19:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4228:33:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 11449,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              16785,
                              16786
                            ],
                            "referencedDeclaration": 16785,
                            "src": "4220:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 11455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4220:42:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11456,
                        "nodeType": "ExpressionStatement",
                        "src": "4220:42:55"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11457,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11441,
                            "src": "4276:5:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11458,
                            "name": "_voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11419,
                            "src": "4284:6:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4276:14:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11460,
                        "nodeType": "ExpressionStatement",
                        "src": "4276:14:55"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11470,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11413,
                        "src": "4379:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11471,
                        "name": "voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11441,
                        "src": "4392:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11472,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11415,
                        "src": "4399:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11473,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11417,
                        "src": "4406:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11469,
                      "name": "internalVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11984,
                      "src": "4366:12:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (bytes32,address,uint256,uint256) returns (bool)"
                      }
                    },
                    "id": 11474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4366:48:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11426,
                  "id": 11475,
                  "nodeType": "Return",
                  "src": "4359:55:55"
                }
              ]
            },
            "documentation": "@dev voting function\n@param _proposalId id of the proposal\n@param _vote a value between 0 to and the proposal number of choices.\n@param _amount the reputation amount to vote with . if _amount == 0 it will use all voter reputation.\n@param _voter voter address\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 11477,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11422,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11413,
                    "src": "3962:11:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 11423,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11421,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 11267,
                  "src": "3954:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3954:20:55"
              }
            ],
            "name": "vote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11413,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11477,
                  "src": "3836:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11412,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3836:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11415,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 11477,
                  "src": "3865:13:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11414,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3865:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11417,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 11477,
                  "src": "3888:15:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11416,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3888:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11419,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 11477,
                  "src": "3913:14:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11418,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3913:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3826:102:55"
            },
            "returnParameters": {
              "id": 11426,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11425,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11477,
                  "src": "3991:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11424,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3991:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3990:6:55"
            },
            "scope": 11985,
            "src": "3813:608:55",
            "stateMutability": "nonpayable",
            "superFunction": 15141,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11491,
              "nodeType": "Block",
              "src": "4695:60:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11486,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11479,
                        "src": "4724:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11487,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16782,
                          "src": "4737:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 11488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4737:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 11485,
                      "name": "cancelVoteInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11719,
                      "src": "4705:18:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 11489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4705:43:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11490,
                  "nodeType": "ExpressionStatement",
                  "src": "4705:43:55"
                }
              ]
            },
            "documentation": "@dev Cancel the vote of the msg.sender: subtract the reputation amount from the votes\nand delete the voter from the proposal struct\n@param _proposalId id of the proposal",
            "id": 11492,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11482,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11479,
                    "src": "4682:11:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 11483,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11481,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 11267,
                  "src": "4674:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4674:20:55"
              }
            ],
            "name": "cancelVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11479,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11492,
                  "src": "4644:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11478,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4644:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4643:21:55"
            },
            "returnParameters": {
              "id": 11484,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4695:0:55"
            },
            "scope": 11985,
            "src": "4624:131:55",
            "stateMutability": "nonpayable",
            "superFunction": 15146,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11506,
              "nodeType": "Block",
              "src": "5101:45:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11503,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11494,
                        "src": "5127:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 11502,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11847,
                      "src": "5118:8:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 11504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5118:21:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11501,
                  "id": 11505,
                  "nodeType": "Return",
                  "src": "5111:28:55"
                }
              ]
            },
            "documentation": "@dev execute check if the proposal has been decided, and if so, execute the proposal\n@param _proposalId the id of the proposal\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 11507,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11497,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11494,
                    "src": "5074:11:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 11498,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11496,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 11267,
                  "src": "5066:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5066:20:55"
              }
            ],
            "name": "execute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11494,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11507,
                  "src": "5036:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11493,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5036:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5035:21:55"
            },
            "returnParameters": {
              "id": 11501,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11500,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11507,
                  "src": "5095:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11499,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5095:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5094:6:55"
            },
            "scope": 11985,
            "src": "5019:127:55",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11519,
              "nodeType": "Block",
              "src": "5465:59:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11514,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11245,
                        "src": "5482:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 11516,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11515,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11509,
                        "src": "5492:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5482:22:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "id": 11517,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "numOfChoices",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 11218,
                    "src": "5482:35:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11513,
                  "id": 11518,
                  "nodeType": "Return",
                  "src": "5475:42:55"
                }
              ]
            },
            "documentation": "@dev getNumberOfChoices returns the number of choices possible in this proposal\nexcluding the abstain vote (0)\n@param _proposalId the ID of the proposal\n@return uint256 that contains number of choices",
            "id": 11520,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNumberOfChoices",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11510,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11509,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11520,
                  "src": "5413:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11508,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5413:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5412:21:55"
            },
            "returnParameters": {
              "id": 11513,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11512,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11520,
                  "src": "5456:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11511,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5456:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5455:9:55"
            },
            "scope": 11985,
            "src": "5385:139:55",
            "stateMutability": "view",
            "superFunction": 15153,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11546,
              "nodeType": "Block",
              "src": "5959:122:55",
              "statements": [
                {
                  "assignments": [
                    11532
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11532,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 11546,
                      "src": "5969:18:55",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                        "typeString": "struct AbsoluteVote.Voter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11531,
                        "name": "Voter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11210,
                        "src": "5969:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$11210_storage_ptr",
                          "typeString": "struct AbsoluteVote.Voter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11539,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11533,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11245,
                          "src": "5990:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                            "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                          }
                        },
                        "id": 11535,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11534,
                          "name": "_proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11522,
                          "src": "6000:11:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5990:22:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                          "typeString": "struct AbsoluteVote.Proposal storage ref"
                        }
                      },
                      "id": 11536,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11230,
                      "src": "5990:29:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$11210_storage_$",
                        "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                      }
                    },
                    "id": 11538,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11537,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11524,
                      "src": "6020:6:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5990:37:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$11210_storage",
                      "typeString": "struct AbsoluteVote.Voter storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5969:58:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11540,
                          "name": "voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11532,
                          "src": "6045:5:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                            "typeString": "struct AbsoluteVote.Voter memory"
                          }
                        },
                        "id": 11541,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11207,
                        "src": "6045:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11542,
                          "name": "voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11532,
                          "src": "6057:5:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                            "typeString": "struct AbsoluteVote.Voter memory"
                          }
                        },
                        "id": 11543,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "reputation",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11209,
                        "src": "6057:16:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 11544,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6044:30:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 11530,
                  "id": 11545,
                  "nodeType": "Return",
                  "src": "6037:37:55"
                }
              ]
            },
            "documentation": "@dev voteInfo returns the vote and the amount of reputation of the user committed to this proposal\n@param _proposalId the ID of the proposal\n@param _voter the address of the voter\n@return uint256 vote - the voters vote\n       uint256 reputation - amount of reputation committed by _voter to _proposalId",
            "id": 11547,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "voteInfo",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11522,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11547,
                  "src": "5888:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11521,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5888:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11524,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 11547,
                  "src": "5909:14:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11523,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5909:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5887:37:55"
            },
            "returnParameters": {
              "id": 11530,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11527,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11547,
                  "src": "5947:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11526,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5947:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11529,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11547,
                  "src": "5953:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11528,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5953:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5946:12:55"
            },
            "scope": 11985,
            "src": "5870:211:55",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11563,
              "nodeType": "Block",
              "src": "6430:61:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11556,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11245,
                          "src": "6447:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                            "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                          }
                        },
                        "id": 11558,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11557,
                          "name": "_proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11549,
                          "src": "6457:11:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6447:22:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                          "typeString": "struct AbsoluteVote.Proposal storage ref"
                        }
                      },
                      "id": 11559,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "votes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11226,
                      "src": "6447:28:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 11561,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11560,
                      "name": "_choice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11551,
                      "src": "6476:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6447:37:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11555,
                  "id": 11562,
                  "nodeType": "Return",
                  "src": "6440:44:55"
                }
              ]
            },
            "documentation": "@dev voteStatus returns the reputation voted for a proposal for a specific voting choice.\n@param _proposalId the ID of the proposal\n@param _choice the index in the\n@return voted reputation for the given choice",
            "id": 11564,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "voteStatus",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11552,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11549,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11564,
                  "src": "6361:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11548,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6361:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11551,
                  "name": "_choice",
                  "nodeType": "VariableDeclaration",
                  "scope": 11564,
                  "src": "6382:15:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11550,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6382:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6360:38:55"
            },
            "returnParameters": {
              "id": 11555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11554,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11564,
                  "src": "6421:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6421:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6420:9:55"
            },
            "scope": 11985,
            "src": "6341:150:55",
            "stateMutability": "view",
            "superFunction": 15169,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11576,
              "nodeType": "Block",
              "src": "6721:52:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11571,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11245,
                        "src": "6739:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 11573,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11572,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11566,
                        "src": "6749:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6739:22:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "id": 11574,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "open",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 11214,
                    "src": "6739:27:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11570,
                  "id": 11575,
                  "nodeType": "Return",
                  "src": "6731:35:55"
                }
              ]
            },
            "documentation": "@dev isVotable check if the proposal is votable\n@param _proposalId the ID of the proposal\n@return bool true or false",
            "id": 11577,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isVotable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11567,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11566,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11577,
                  "src": "6672:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11565,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6672:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6671:21:55"
            },
            "returnParameters": {
              "id": 11570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11569,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11577,
                  "src": "6715:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11568,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6715:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6714:6:55"
            },
            "scope": 11985,
            "src": "6653:120:55",
            "stateMutability": "view",
            "superFunction": 15160,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11584,
              "nodeType": "Block",
              "src": "6958:28:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 11582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6975:4:55",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 11581,
                  "id": 11583,
                  "nodeType": "Return",
                  "src": "6968:11:55"
                }
              ]
            },
            "documentation": "@dev isAbstainAllow returns if the voting machine allow abstain (0)\n@return bool true or false",
            "id": 11585,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isAbstainAllow",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11578,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6927:2:55"
            },
            "returnParameters": {
              "id": 11581,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11580,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11585,
                  "src": "6952:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11579,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6952:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6951:6:55"
            },
            "scope": 11985,
            "src": "6904:82:55",
            "stateMutability": "pure",
            "superFunction": 15174,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11596,
              "nodeType": "Block",
              "src": "7282:47:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 11592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7300:1:55",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 11593,
                        "name": "MAX_NUM_OF_CHOICES",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11252,
                        "src": "7303:18:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 11594,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7299:23:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_uint256_$",
                      "typeString": "tuple(int_const 0,uint256)"
                    }
                  },
                  "functionReturnParameters": 11591,
                  "id": 11595,
                  "nodeType": "Return",
                  "src": "7292:30:55"
                }
              ]
            },
            "documentation": "@dev getAllowedRangeOfChoices returns the allowed range of choices for a voting machine.\n@return min - minimum number of choices\nmax - maximum number of choices",
            "id": 11597,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAllowedRangeOfChoices",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11586,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7231:2:55"
            },
            "returnParameters": {
              "id": 11591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11588,
                  "name": "min",
                  "nodeType": "VariableDeclaration",
                  "scope": 11597,
                  "src": "7256:11:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11587,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7256:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11590,
                  "name": "max",
                  "nodeType": "VariableDeclaration",
                  "scope": 11597,
                  "src": "7269:11:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11589,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7269:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7255:26:55"
            },
            "scope": 11985,
            "src": "7198:131:55",
            "stateMutability": "pure",
            "superFunction": 15181,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11634,
              "nodeType": "Block",
              "src": "7521:304:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 11613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11607,
                            "name": "_precReq",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11599,
                            "src": "7539:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 11608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7551:3:55",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "7539:15:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11610,
                            "name": "_precReq",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11599,
                            "src": "7558:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7569:1:55",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7558:12:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7539:31:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 11606,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "7531:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 11614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7531:40:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11615,
                  "nodeType": "ExpressionStatement",
                  "src": "7531:40:55"
                },
                {
                  "assignments": [
                    11617
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11617,
                      "name": "hashedParameters",
                      "nodeType": "VariableDeclaration",
                      "scope": 11634,
                      "src": "7581:24:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11616,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7581:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11622,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11619,
                        "name": "_precReq",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11599,
                        "src": "7626:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11620,
                        "name": "_voteOnBehalf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11601,
                        "src": "7636:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11618,
                      "name": "getParametersHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11653,
                      "src": "7608:17:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (uint256,address) pure returns (bytes32)"
                      }
                    },
                    "id": 11621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7608:42:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7581:69:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11623,
                        "name": "parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11241,
                        "src": "7660:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$11205_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                        }
                      },
                      "id": 11625,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11624,
                        "name": "hashedParameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11617,
                        "src": "7671:16:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7660:28:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$11205_storage",
                        "typeString": "struct AbsoluteVote.Parameters storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11627,
                          "name": "_precReq",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11599,
                          "src": "7725:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11628,
                          "name": "_voteOnBehalf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11601,
                          "src": "7761:13:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11626,
                        "name": "Parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11205,
                        "src": "7691:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Parameters_$11205_storage_ptr_$",
                          "typeString": "type(struct AbsoluteVote.Parameters storage pointer)"
                        }
                      },
                      "id": 11629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "precReq",
                        "voteOnBehalf"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "7691:94:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$11205_memory",
                        "typeString": "struct AbsoluteVote.Parameters memory"
                      }
                    },
                    "src": "7660:125:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$11205_storage",
                      "typeString": "struct AbsoluteVote.Parameters storage ref"
                    }
                  },
                  "id": 11631,
                  "nodeType": "ExpressionStatement",
                  "src": "7660:125:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11632,
                    "name": "hashedParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11617,
                    "src": "7802:16:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11605,
                  "id": 11633,
                  "nodeType": "Return",
                  "src": "7795:23:55"
                }
              ]
            },
            "documentation": "@dev hash the parameters, save them if necessary, and return the hash value",
            "id": 11635,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11599,
                  "name": "_precReq",
                  "nodeType": "VariableDeclaration",
                  "scope": 11635,
                  "src": "7456:16:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11598,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7456:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11601,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 11635,
                  "src": "7474:21:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11600,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7474:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7455:41:55"
            },
            "returnParameters": {
              "id": 11605,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11604,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11635,
                  "src": "7512:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11603,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7512:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7511:9:55"
            },
            "scope": 11985,
            "src": "7433:392:55",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11652,
              "nodeType": "Block",
              "src": "8010:76:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11647,
                            "name": "_precReq",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11637,
                            "src": "8054:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11648,
                            "name": "_voteOnBehalf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11639,
                            "src": "8064:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 11645,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16769,
                            "src": "8037:3:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 11646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8037:16:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 11649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8037:41:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 11644,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16776,
                      "src": "8027:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 11650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8027:52:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11643,
                  "id": 11651,
                  "nodeType": "Return",
                  "src": "8020:59:55"
                }
              ]
            },
            "documentation": "@dev hashParameters returns a hash of the given parameters",
            "id": 11653,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getParametersHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11640,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11637,
                  "name": "_precReq",
                  "nodeType": "VariableDeclaration",
                  "scope": 11653,
                  "src": "7940:16:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11636,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7940:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11639,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 11653,
                  "src": "7958:21:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11638,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7958:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7939:41:55"
            },
            "returnParameters": {
              "id": 11643,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11642,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11653,
                  "src": "8001:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11641,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8001:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8000:9:55"
            },
            "scope": 11985,
            "src": "7913:173:55",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11718,
              "nodeType": "Block",
              "src": "8166:413:55",
              "statements": [
                {
                  "assignments": [
                    11661
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11661,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 11718,
                      "src": "8176:25:55",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11660,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11231,
                        "src": "8176:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11665,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11662,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11245,
                      "src": "8204:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 11664,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11663,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11655,
                      "src": "8214:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8204:22:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8176:50:55"
                },
                {
                  "assignments": [
                    11667
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11667,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 11718,
                      "src": "8236:18:55",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                        "typeString": "struct AbsoluteVote.Voter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11666,
                        "name": "Voter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11210,
                        "src": "8236:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$11210_storage_ptr",
                          "typeString": "struct AbsoluteVote.Voter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11672,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11668,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11661,
                        "src": "8257:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 11669,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11230,
                      "src": "8257:15:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$11210_storage_$",
                        "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                      }
                    },
                    "id": 11671,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11670,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11657,
                      "src": "8273:6:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8257:23:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$11210_storage",
                      "typeString": "struct AbsoluteVote.Voter storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8236:44:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11673,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11661,
                          "src": "8290:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 11677,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11226,
                        "src": "8290:14:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 11678,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11675,
                          "name": "voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11667,
                          "src": "8305:5:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                            "typeString": "struct AbsoluteVote.Voter memory"
                          }
                        },
                        "id": 11676,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11207,
                        "src": "8305:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8290:26:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11686,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11667,
                            "src": "8352:5:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                              "typeString": "struct AbsoluteVote.Voter memory"
                            }
                          },
                          "id": 11687,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reputation",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11209,
                          "src": "8352:16:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11679,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11661,
                                  "src": "8320:8:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                    "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                  }
                                },
                                "id": 11680,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "votes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11226,
                                "src": "8320:14:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 11683,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11681,
                                  "name": "voter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11667,
                                  "src": "8335:5:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                                    "typeString": "struct AbsoluteVote.Voter memory"
                                  }
                                },
                                "id": 11682,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "vote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11207,
                                "src": "8335:10:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8320:26:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 11684,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8319:28:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15874,
                        "src": "8319:32:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 11688,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8319:50:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8290:79:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11690,
                  "nodeType": "ExpressionStatement",
                  "src": "8290:79:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11701,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11691,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11661,
                        "src": "8379:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 11693,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11222,
                      "src": "8379:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11698,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11667,
                            "src": "8427:5:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                              "typeString": "struct AbsoluteVote.Voter memory"
                            }
                          },
                          "id": 11699,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reputation",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11209,
                          "src": "8427:16:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11694,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11661,
                                "src": "8402:8:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "id": 11695,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11222,
                              "src": "8402:19:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 11696,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8401:21:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15874,
                        "src": "8401:25:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 11700,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8401:43:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8379:65:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11702,
                  "nodeType": "ExpressionStatement",
                  "src": "8379:65:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8454:30:55",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11703,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11661,
                          "src": "8461:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 11704,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11230,
                        "src": "8461:15:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$11210_storage_$",
                          "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                        }
                      },
                      "id": 11706,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11705,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11657,
                        "src": "8477:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8461:23:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$11210_storage",
                        "typeString": "struct AbsoluteVote.Voter storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11708,
                  "nodeType": "ExpressionStatement",
                  "src": "8454:30:55"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11710,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11655,
                        "src": "8512:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11711,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11249,
                          "src": "8525:13:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 11714,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11712,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11661,
                            "src": "8539:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 11713,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11212,
                          "src": "8539:23:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8525:38:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11715,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11657,
                        "src": "8565:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11709,
                      "name": "CancelVoting",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15115,
                      "src": "8499:12:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address,address)"
                      }
                    },
                    "id": 11716,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8499:73:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11717,
                  "nodeType": "EmitStatement",
                  "src": "8494:78:55"
                }
              ]
            },
            "documentation": null,
            "id": 11719,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "cancelVoteInternal",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11658,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11655,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11719,
                  "src": "8120:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11654,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8120:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11657,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 11719,
                  "src": "8141:14:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11656,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8141:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8119:37:55"
            },
            "returnParameters": {
              "id": 11659,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8166:0:55"
            },
            "scope": 11985,
            "src": "8092:487:55",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11754,
              "nodeType": "Block",
              "src": "8639:225:55",
              "statements": [
                {
                  "assignments": [
                    11725
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11725,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 11754,
                      "src": "8649:25:55",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11724,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11231,
                        "src": "8649:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11729,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11726,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11245,
                      "src": "8677:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 11728,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11727,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11721,
                      "src": "8687:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8677:22:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8649:50:55"
                },
                {
                  "body": {
                    "id": 11747,
                    "nodeType": "Block",
                    "src": "8768:51:55",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "8782:26:55",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11741,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11725,
                                "src": "8789:8:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "id": 11742,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11226,
                              "src": "8789:14:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 11744,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11743,
                              "name": "cnt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11731,
                              "src": "8804:3:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8789:19:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11746,
                        "nodeType": "ExpressionStatement",
                        "src": "8782:26:55"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11737,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11734,
                      "name": "cnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11731,
                      "src": "8731:3:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11735,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11725,
                        "src": "8738:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 11736,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numOfChoices",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11218,
                      "src": "8738:21:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8731:28:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11748,
                  "initializationExpression": {
                    "assignments": [
                      11731
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11731,
                        "name": "cnt",
                        "nodeType": "VariableDeclaration",
                        "scope": 11748,
                        "src": "8714:11:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11730,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8714:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11733,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11732,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8728:1:55",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8714:15:55"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11739,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "8761:5:55",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11738,
                        "name": "cnt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11731,
                        "src": "8761:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11740,
                    "nodeType": "ExpressionStatement",
                    "src": "8761:5:55"
                  },
                  "nodeType": "ForStatement",
                  "src": "8709:110:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11752,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8828:29:55",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11749,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11245,
                        "src": "8835:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 11751,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11750,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11721,
                        "src": "8845:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8835:22:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11753,
                  "nodeType": "ExpressionStatement",
                  "src": "8828:29:55"
                }
              ]
            },
            "documentation": null,
            "id": 11755,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deleteProposal",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11722,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11721,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11755,
                  "src": "8609:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11720,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8609:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8608:21:55"
            },
            "returnParameters": {
              "id": 11723,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8639:0:55"
            },
            "scope": 11985,
            "src": "8585:279:55",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11846,
              "nodeType": "Block",
              "src": "9211:826:55",
              "statements": [
                {
                  "assignments": [
                    11766
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11766,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 11846,
                      "src": "9221:25:55",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11765,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11231,
                        "src": "9221:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11770,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11767,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11245,
                      "src": "9249:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 11769,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11768,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11757,
                      "src": "9259:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9249:22:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9221:50:55"
                },
                {
                  "assignments": [
                    11772
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11772,
                      "name": "totalReputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 11846,
                      "src": "9281:23:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11771,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9281:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11780,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11778,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11757,
                        "src": "9392:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11774,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11766,
                              "src": "9347:8:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                "typeString": "struct AbsoluteVote.Proposal storage pointer"
                              }
                            },
                            "id": 11775,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11216,
                            "src": "9347:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 11773,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15258,
                          "src": "9315:31:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 11776,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9315:51:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 11777,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTotalReputationSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15239,
                      "src": "9315:76:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 11779,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9315:89:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9281:123:55"
                },
                {
                  "assignments": [
                    11782
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11782,
                      "name": "precReq",
                      "nodeType": "VariableDeclaration",
                      "scope": 11846,
                      "src": "9414:15:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11781,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9414:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11788,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11783,
                        "name": "parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11241,
                        "src": "9432:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$11205_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                        }
                      },
                      "id": 11786,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11784,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11766,
                          "src": "9443:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 11785,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "paramsHash",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11220,
                        "src": "9443:19:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9432:31:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$11205_storage",
                        "typeString": "struct AbsoluteVote.Parameters storage ref"
                      }
                    },
                    "id": 11787,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "precReq",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 11202,
                    "src": "9432:39:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9414:57:55"
                },
                {
                  "body": {
                    "id": 11842,
                    "nodeType": "Block",
                    "src": "9585:424:55",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11800,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11766,
                                "src": "9603:8:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "id": 11801,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11226,
                              "src": "9603:14:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 11803,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11802,
                              "name": "cnt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11790,
                              "src": "9618:3:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9603:19:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11809,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11806,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11804,
                                    "name": "totalReputation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11772,
                                    "src": "9626:15:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "313030",
                                    "id": 11805,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9642:3:55",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_100_by_1",
                                      "typeString": "int_const 100"
                                    },
                                    "value": "100"
                                  },
                                  "src": "9626:19:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 11807,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "9625:21:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 11808,
                              "name": "precReq",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11782,
                              "src": "9647:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9625:29:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9603:51:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 11841,
                        "nodeType": "IfStatement",
                        "src": "9599:400:55",
                        "trueBody": {
                          "id": 11840,
                          "nodeType": "Block",
                          "src": "9656:343:55",
                          "statements": [
                            {
                              "assignments": [
                                11812
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11812,
                                  "name": "tmpProposal",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11840,
                                  "src": "9674:27:55",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                                    "typeString": "struct AbsoluteVote.Proposal"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 11811,
                                    "name": "Proposal",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 11231,
                                    "src": "9674:8:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                      "typeString": "struct AbsoluteVote.Proposal"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11814,
                              "initialValue": {
                                "argumentTypes": null,
                                "id": 11813,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11766,
                                "src": "9704:8:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9674:38:55"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11816,
                                    "name": "_proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11757,
                                    "src": "9745:11:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 11815,
                                  "name": "deleteProposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11755,
                                  "src": "9730:14:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32)"
                                  }
                                },
                                "id": 11817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9730:27:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11818,
                              "nodeType": "ExpressionStatement",
                              "src": "9730:27:55"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11820,
                                    "name": "_proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11757,
                                    "src": "9796:11:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 11821,
                                      "name": "organizations",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11249,
                                      "src": "9809:13:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                        "typeString": "mapping(bytes32 => address)"
                                      }
                                    },
                                    "id": 11824,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 11822,
                                        "name": "tmpProposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11812,
                                        "src": "9823:11:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                                          "typeString": "struct AbsoluteVote.Proposal memory"
                                        }
                                      },
                                      "id": 11823,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "organizationId",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11212,
                                      "src": "9823:26:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9809:41:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 11825,
                                    "name": "cnt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11790,
                                    "src": "9852:3:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 11826,
                                    "name": "totalReputation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11772,
                                    "src": "9857:15:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 11819,
                                  "name": "ExecuteProposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15089,
                                  "src": "9780:15:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (bytes32,address,uint256,uint256)"
                                  }
                                },
                                "id": 11827,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9780:93:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11828,
                              "nodeType": "EmitStatement",
                              "src": "9775:98:55"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11834,
                                    "name": "_proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11757,
                                    "src": "9962:11:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 11836,
                                        "name": "cnt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11790,
                                        "src": "9979:3:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 11835,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9975:3:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": "int"
                                    },
                                    "id": 11837,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9975:8:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 11830,
                                          "name": "tmpProposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11812,
                                          "src": "9923:11:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                                            "typeString": "struct AbsoluteVote.Proposal memory"
                                          }
                                        },
                                        "id": 11831,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "callbacks",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 11216,
                                        "src": "9923:21:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 11829,
                                      "name": "ProposalExecuteInterface",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15194,
                                      "src": "9898:24:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ProposalExecuteInterface_$15194_$",
                                        "typeString": "type(contract ProposalExecuteInterface)"
                                      }
                                    },
                                    "id": 11832,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9898:47:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ProposalExecuteInterface_$15194",
                                      "typeString": "contract ProposalExecuteInterface"
                                    }
                                  },
                                  "id": 11833,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "executeProposal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15193,
                                  "src": "9898:63:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_int256_$returns$_t_bool_$",
                                    "typeString": "function (bytes32,int256) external returns (bool)"
                                  }
                                },
                                "id": 11838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9898:86:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "functionReturnParameters": 11764,
                              "id": 11839,
                              "nodeType": "Return",
                              "src": "9891:93:55"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11793,
                      "name": "cnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11790,
                      "src": "9548:3:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11794,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11766,
                        "src": "9555:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 11795,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numOfChoices",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11218,
                      "src": "9555:21:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9548:28:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11843,
                  "initializationExpression": {
                    "assignments": [
                      11790
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11790,
                        "name": "cnt",
                        "nodeType": "VariableDeclaration",
                        "scope": 11843,
                        "src": "9531:11:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11789,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9531:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11792,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11791,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9545:1:55",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9531:15:55"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11798,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "9578:5:55",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11797,
                        "name": "cnt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11790,
                        "src": "9578:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11799,
                    "nodeType": "ExpressionStatement",
                    "src": "9578:5:55"
                  },
                  "nodeType": "ForStatement",
                  "src": "9526:483:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 11844,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "10025:5:55",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 11764,
                  "id": 11845,
                  "nodeType": "Return",
                  "src": "10018:12:55"
                }
              ]
            },
            "documentation": "@dev execute check if the proposal has been decided, and if so, execute the proposal\n@param _proposalId the id of the proposal\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 11847,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11760,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11757,
                    "src": "9184:11:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 11761,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11759,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 11267,
                  "src": "9176:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9176:20:55"
              }
            ],
            "name": "_execute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11758,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11757,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "9146:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11756,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9146:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9145:21:55"
            },
            "returnParameters": {
              "id": 11764,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11763,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "9205:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11762,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9205:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9204:6:55"
            },
            "scope": 11985,
            "src": "9128:909:55",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11983,
              "nodeType": "Block",
              "src": "10665:1227:55",
              "statements": [
                {
                  "assignments": [
                    11861
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11861,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 11983,
                      "src": "10675:25:55",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11860,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11231,
                        "src": "10675:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11865,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11862,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11245,
                      "src": "10703:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 11864,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11863,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11849,
                      "src": "10713:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10703:22:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10675:50:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 11870,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 11867,
                          "name": "_vote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11853,
                          "src": "10772:5:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11868,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11861,
                            "src": "10781:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 11869,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numOfChoices",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11218,
                          "src": "10781:21:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10772:30:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 11866,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "10764:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 11871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10764:39:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11872,
                  "nodeType": "ExpressionStatement",
                  "src": "10764:39:55"
                },
                {
                  "assignments": [
                    11874
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11874,
                      "name": "reputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 11983,
                      "src": "10859:18:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11873,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10859:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11883,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11880,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11851,
                        "src": "10945:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11881,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11849,
                        "src": "10953:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11876,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11861,
                              "src": "10912:8:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                "typeString": "struct AbsoluteVote.Proposal storage pointer"
                              }
                            },
                            "id": 11877,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11216,
                            "src": "10912:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 11875,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15258,
                          "src": "10880:31:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 11878,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10880:51:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 11879,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputationOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15248,
                      "src": "10880:64:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (address,bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 11882,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10880:85:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10859:106:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 11887,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 11885,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11874,
                          "src": "10983:10:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10996:1:55",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10983:14:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5f766f746572206d75737420686176652072657075746174696f6e",
                        "id": 11888,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10999:29:55",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_904ad937a2b27da2b88c6196de3f24fd299b75859ba99719946b0bb0ef68cc41",
                          "typeString": "literal_string \"_voter must have reputation\""
                        },
                        "value": "_voter must have reputation"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_904ad937a2b27da2b88c6196de3f24fd299b75859ba99719946b0bb0ef68cc41",
                          "typeString": "literal_string \"_voter must have reputation\""
                        }
                      ],
                      "id": 11884,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "10975:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10975:54:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11890,
                  "nodeType": "ExpressionStatement",
                  "src": "10975:54:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 11894,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 11892,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11874,
                          "src": "11047:10:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 11893,
                          "name": "_rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11855,
                          "src": "11061:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11047:18:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 11891,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "11039:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 11895,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11039:27:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11896,
                  "nodeType": "ExpressionStatement",
                  "src": "11039:27:55"
                },
                {
                  "assignments": [
                    11898
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11898,
                      "name": "rep",
                      "nodeType": "VariableDeclaration",
                      "scope": 11983,
                      "src": "11076:11:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11897,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11076:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11900,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 11899,
                    "name": "_rep",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11855,
                    "src": "11090:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11076:18:55"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11901,
                      "name": "rep",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11898,
                      "src": "11108:3:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11902,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11115:1:55",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11108:8:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11909,
                  "nodeType": "IfStatement",
                  "src": "11104:55:55",
                  "trueBody": {
                    "id": 11908,
                    "nodeType": "Block",
                    "src": "11118:41:55",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11904,
                            "name": "rep",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11898,
                            "src": "11132:3:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11905,
                            "name": "reputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11874,
                            "src": "11138:10:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11132:16:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11907,
                        "nodeType": "ExpressionStatement",
                        "src": "11132:16:55"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11910,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11861,
                            "src": "11239:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 11911,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "voters",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11230,
                          "src": "11239:15:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$11210_storage_$",
                            "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                          }
                        },
                        "id": 11913,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11912,
                          "name": "_voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11851,
                          "src": "11255:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11239:23:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$11210_storage",
                          "typeString": "struct AbsoluteVote.Voter storage ref"
                        }
                      },
                      "id": 11914,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11209,
                      "src": "11239:34:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11915,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11277:1:55",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11239:39:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11923,
                  "nodeType": "IfStatement",
                  "src": "11235:109:55",
                  "trueBody": {
                    "id": 11922,
                    "nodeType": "Block",
                    "src": "11280:64:55",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11918,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11849,
                              "src": "11313:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11919,
                              "name": "_voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11851,
                              "src": "11326:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11917,
                            "name": "cancelVoteInternal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11719,
                            "src": "11294:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 11920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11294:39:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11921,
                        "nodeType": "ExpressionStatement",
                        "src": "11294:39:55"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11924,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11861,
                          "src": "11383:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 11927,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11226,
                        "src": "11383:14:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 11928,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11926,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11853,
                        "src": "11398:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11383:21:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11931,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11861,
                              "src": "11415:8:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                "typeString": "struct AbsoluteVote.Proposal storage pointer"
                              }
                            },
                            "id": 11932,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "votes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11226,
                            "src": "11415:14:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 11934,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 11933,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11853,
                            "src": "11430:5:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11415:21:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 11929,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11898,
                          "src": "11407:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11930,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "11407:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 11935,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11407:30:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11383:54:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11937,
                  "nodeType": "ExpressionStatement",
                  "src": "11383:54:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11946,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11938,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11861,
                        "src": "11447:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 11940,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11222,
                      "src": "11447:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11943,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11861,
                            "src": "11477:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 11944,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalVotes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11222,
                          "src": "11477:19:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 11941,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11898,
                          "src": "11469:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "11469:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 11945,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11469:28:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11447:50:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11947,
                  "nodeType": "ExpressionStatement",
                  "src": "11447:50:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11948,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11861,
                          "src": "11507:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 11951,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11230,
                        "src": "11507:15:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$11210_storage_$",
                          "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                        }
                      },
                      "id": 11952,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11950,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11851,
                        "src": "11523:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11507:23:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$11210_storage",
                        "typeString": "struct AbsoluteVote.Voter storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11954,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11898,
                          "src": "11565:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11955,
                          "name": "_vote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11853,
                          "src": "11588:5:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11953,
                        "name": "Voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11210,
                        "src": "11533:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Voter_$11210_storage_ptr_$",
                          "typeString": "type(struct AbsoluteVote.Voter storage pointer)"
                        }
                      },
                      "id": 11956,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "reputation",
                        "vote"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "11533:71:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$11210_memory",
                        "typeString": "struct AbsoluteVote.Voter memory"
                      }
                    },
                    "src": "11507:97:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$11210_storage",
                      "typeString": "struct AbsoluteVote.Voter storage ref"
                    }
                  },
                  "id": 11958,
                  "nodeType": "ExpressionStatement",
                  "src": "11507:97:55"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11960,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11849,
                        "src": "11650:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11961,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11249,
                          "src": "11663:13:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 11964,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11962,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11861,
                            "src": "11677:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 11963,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11212,
                          "src": "11677:23:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11663:38:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11965,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11851,
                        "src": "11703:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11966,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11853,
                        "src": "11711:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11967,
                        "name": "rep",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11898,
                        "src": "11718:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11959,
                      "name": "VoteProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15101,
                      "src": "11637:12:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                      }
                    },
                    "id": 11968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11637:85:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11969,
                  "nodeType": "EmitStatement",
                  "src": "11632:90:55"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11971,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11849,
                        "src": "11752:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 11975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 11972,
                              "name": "_voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11851,
                              "src": "11766:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11973,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16782,
                                "src": "11776:3:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 11974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11776:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "11766:20:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 11976,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "11765:22:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 11970,
                      "name": "AVVoteProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11237,
                      "src": "11737:14:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$",
                        "typeString": "function (bytes32,bool)"
                      }
                    },
                    "id": 11977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11737:51:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11978,
                  "nodeType": "EmitStatement",
                  "src": "11732:56:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11980,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11849,
                        "src": "11873:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 11979,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11847,
                      "src": "11864:8:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 11981,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11864:21:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11859,
                  "id": 11982,
                  "nodeType": "Return",
                  "src": "11857:28:55"
                }
              ]
            },
            "documentation": "@dev Vote for a proposal, if the voter already voted, cancel the last vote and set a new one instead\n@param _proposalId id of the proposal\n@param _voter used in case the vote is cast for someone else\n@param _vote a value between 0 to and the proposal's number of choices.\n@return true in case of proposal execution otherwise false\nthrows if proposal is not open or if it has been executed\nNB: executes the proposal if a decision has been reached",
            "id": 11984,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "internalVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11856,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11849,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11984,
                  "src": "10576:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11848,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10576:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11851,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 11984,
                  "src": "10597:14:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11850,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10597:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11853,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 11984,
                  "src": "10613:13:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11852,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10613:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11855,
                  "name": "_rep",
                  "nodeType": "VariableDeclaration",
                  "scope": 11984,
                  "src": "10628:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11854,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10628:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10575:66:55"
            },
            "returnParameters": {
              "id": 11859,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11858,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11984,
                  "src": "10659:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11857,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10659:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10658:6:55"
            },
            "scope": 11985,
            "src": "10554:1338:55",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 11986,
        "src": "237:11657:55"
      }
    ],
    "src": "0:11895:55"
  },
  "legacyAST": {
    "absolutePath": "@daostack/infra/contracts/votingMachines/AbsoluteVote.sol",
    "exportedSymbols": {
      "AbsoluteVote": [
        11985
      ]
    },
    "id": 11986,
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 11190,
        "literals": [
          "solidity",
          "^",
          "0.5",
          ".4"
        ],
        "nodeType": "PragmaDirective",
        "src": "0:23:55"
      },
      {
        "absolutePath": "@daostack/infra/contracts/Reputation.sol",
        "file": "../Reputation.sol",
        "id": 11191,
        "nodeType": "ImportDirective",
        "scope": 11986,
        "sourceUnit": 11035,
        "src": "25:27:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/IntVoteInterface.sol",
        "file": "./IntVoteInterface.sol",
        "id": 11192,
        "nodeType": "ImportDirective",
        "scope": 11986,
        "sourceUnit": 15183,
        "src": "53:32:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "file": "openzeppelin-solidity/contracts/math/SafeMath.sol",
        "id": 11193,
        "nodeType": "ImportDirective",
        "scope": 11986,
        "sourceUnit": 15920,
        "src": "86:59:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/VotingMachineCallbacksInterface.sol",
        "file": "./VotingMachineCallbacksInterface.sol",
        "id": 11194,
        "nodeType": "ImportDirective",
        "scope": 11986,
        "sourceUnit": 15259,
        "src": "146:47:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "absolutePath": "@daostack/infra/contracts/votingMachines/ProposalExecuteInterface.sol",
        "file": "./ProposalExecuteInterface.sol",
        "id": 11195,
        "nodeType": "ImportDirective",
        "scope": 11986,
        "sourceUnit": 15195,
        "src": "194:40:55",
        "symbolAliases": [],
        "unitAlias": ""
      },
      {
        "baseContracts": [
          {
            "arguments": null,
            "baseName": {
              "contractScope": null,
              "id": 11196,
              "name": "IntVoteInterface",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15182,
              "src": "262:16:55",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_IntVoteInterface_$15182",
                "typeString": "contract IntVoteInterface"
              }
            },
            "id": 11197,
            "nodeType": "InheritanceSpecifier",
            "src": "262:16:55"
          }
        ],
        "contractDependencies": [
          15182
        ],
        "contractKind": "contract",
        "documentation": null,
        "fullyImplemented": true,
        "id": 11985,
        "linearizedBaseContracts": [
          11985,
          15182
        ],
        "name": "AbsoluteVote",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "id": 11200,
            "libraryName": {
              "contractScope": null,
              "id": 11198,
              "name": "SafeMath",
              "nodeType": "UserDefinedTypeName",
              "referencedDeclaration": 15919,
              "src": "291:8:55",
              "typeDescriptions": {
                "typeIdentifier": "t_contract$_SafeMath_$15919",
                "typeString": "library SafeMath"
              }
            },
            "nodeType": "UsingForDirective",
            "src": "285:24:55",
            "typeName": {
              "id": 11199,
              "name": "uint",
              "nodeType": "ElementaryTypeName",
              "src": "304:4:55",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            }
          },
          {
            "canonicalName": "AbsoluteVote.Parameters",
            "id": 11205,
            "members": [
              {
                "constant": false,
                "id": 11202,
                "name": "precReq",
                "nodeType": "VariableDeclaration",
                "scope": 11205,
                "src": "343:15:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 11201,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "343:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11204,
                "name": "voteOnBehalf",
                "nodeType": "VariableDeclaration",
                "scope": 11205,
                "src": "431:20:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 11203,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "431:7:55",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Parameters",
            "nodeType": "StructDefinition",
            "scope": 11985,
            "src": "315:268:55",
            "visibility": "public"
          },
          {
            "canonicalName": "AbsoluteVote.Voter",
            "id": 11210,
            "members": [
              {
                "constant": false,
                "id": 11207,
                "name": "vote",
                "nodeType": "VariableDeclaration",
                "scope": 11210,
                "src": "612:12:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 11206,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "612:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11209,
                "name": "reputation",
                "nodeType": "VariableDeclaration",
                "scope": 11210,
                "src": "651:18:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 11208,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "651:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Voter",
            "nodeType": "StructDefinition",
            "scope": 11985,
            "src": "589:119:55",
            "visibility": "public"
          },
          {
            "canonicalName": "AbsoluteVote.Proposal",
            "id": 11231,
            "members": [
              {
                "constant": false,
                "id": 11212,
                "name": "organizationId",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "740:22:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 11211,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "740:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11214,
                "name": "open",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "795:9:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bool",
                  "typeString": "bool"
                },
                "typeName": {
                  "id": 11213,
                  "name": "bool",
                  "nodeType": "ElementaryTypeName",
                  "src": "795:4:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11216,
                "name": "callbacks",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "834:17:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 11215,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "834:7:55",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11218,
                "name": "numOfChoices",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "861:20:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 11217,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "861:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11220,
                "name": "paramsHash",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "891:18:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 11219,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "891:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11222,
                "name": "totalVotes",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "965:18:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 11221,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "965:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11226,
                "name": "votes",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "993:25:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                  "typeString": "mapping(uint256 => uint256)"
                },
                "typeName": {
                  "id": 11225,
                  "keyType": {
                    "id": 11223,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1001:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "993:19:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                    "typeString": "mapping(uint256 => uint256)"
                  },
                  "valueType": {
                    "id": 11224,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "1007:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 11230,
                "name": "voters",
                "nodeType": "VariableDeclaration",
                "scope": 11231,
                "src": "1028:30:55",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$11210_storage_$",
                  "typeString": "mapping(address => struct AbsoluteVote.Voter)"
                },
                "typeName": {
                  "id": 11229,
                  "keyType": {
                    "id": 11227,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1036:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "1028:23:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$11210_storage_$",
                    "typeString": "mapping(address => struct AbsoluteVote.Voter)"
                  },
                  "valueType": {
                    "contractScope": null,
                    "id": 11228,
                    "name": "Voter",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 11210,
                    "src": "1045:5:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$11210_storage_ptr",
                      "typeString": "struct AbsoluteVote.Voter"
                    }
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "Proposal",
            "nodeType": "StructDefinition",
            "scope": 11985,
            "src": "714:351:55",
            "visibility": "public"
          },
          {
            "anonymous": false,
            "documentation": null,
            "id": 11237,
            "name": "AVVoteProposal",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 11236,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11233,
                  "indexed": true,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11237,
                  "src": "1092:27:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11232,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1092:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11235,
                  "indexed": false,
                  "name": "_isProxyVote",
                  "nodeType": "VariableDeclaration",
                  "scope": 11237,
                  "src": "1121:17:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11234,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1121:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1091:48:55"
            },
            "src": "1071:69:55"
          },
          {
            "constant": false,
            "id": 11241,
            "name": "parameters",
            "nodeType": "VariableDeclaration",
            "scope": 11985,
            "src": "1146:46:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$11205_storage_$",
              "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters)"
            },
            "typeName": {
              "id": 11240,
              "keyType": {
                "id": 11238,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1154:7:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1146:28:55",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$11205_storage_$",
                "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters)"
              },
              "valueType": {
                "contractScope": null,
                "id": 11239,
                "name": "Parameters",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 11205,
                "src": "1163:10:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Parameters_$11205_storage_ptr",
                  "typeString": "struct AbsoluteVote.Parameters"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 11245,
            "name": "proposals",
            "nodeType": "VariableDeclaration",
            "scope": 11985,
            "src": "1238:43:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
              "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal)"
            },
            "typeName": {
              "id": 11244,
              "keyType": {
                "id": 11242,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1246:7:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1238:26:55",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal)"
              },
              "valueType": {
                "contractScope": null,
                "id": 11243,
                "name": "Proposal",
                "nodeType": "UserDefinedTypeName",
                "referencedDeclaration": 11231,
                "src": "1255:8:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                  "typeString": "struct AbsoluteVote.Proposal"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 11249,
            "name": "organizations",
            "nodeType": "VariableDeclaration",
            "scope": 11985,
            "src": "1350:46:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
              "typeString": "mapping(bytes32 => address)"
            },
            "typeName": {
              "id": 11248,
              "keyType": {
                "id": 11246,
                "name": "bytes32",
                "nodeType": "ElementaryTypeName",
                "src": "1358:7:55",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                }
              },
              "nodeType": "Mapping",
              "src": "1350:25:55",
              "typeDescriptions": {
                "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                "typeString": "mapping(bytes32 => address)"
              },
              "valueType": {
                "id": 11247,
                "name": "address",
                "nodeType": "ElementaryTypeName",
                "src": "1367:7:55",
                "stateMutability": "nonpayable",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                }
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "constant": true,
            "id": 11252,
            "name": "MAX_NUM_OF_CHOICES",
            "nodeType": "VariableDeclaration",
            "scope": 11985,
            "src": "1403:47:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11250,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1403:7:55",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": {
              "argumentTypes": null,
              "hexValue": "3130",
              "id": 11251,
              "isConstant": false,
              "isLValue": false,
              "isPure": true,
              "kind": "number",
              "lValueRequested": false,
              "nodeType": "Literal",
              "src": "1448:2:55",
              "subdenomination": null,
              "typeDescriptions": {
                "typeIdentifier": "t_rational_10_by_1",
                "typeString": "int_const 10"
              },
              "value": "10"
            },
            "visibility": "public"
          },
          {
            "constant": false,
            "id": 11254,
            "name": "proposalsCnt",
            "nodeType": "VariableDeclaration",
            "scope": 11985,
            "src": "1456:27:55",
            "stateVariable": true,
            "storageLocation": "default",
            "typeDescriptions": {
              "typeIdentifier": "t_uint256",
              "typeString": "uint256"
            },
            "typeName": {
              "id": 11253,
              "name": "uint256",
              "nodeType": "ElementaryTypeName",
              "src": "1456:7:55",
              "typeDescriptions": {
                "typeIdentifier": "t_uint256",
                "typeString": "uint256"
              }
            },
            "value": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11266,
              "nodeType": "Block",
              "src": "1642:64:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 11259,
                            "name": "proposals",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11245,
                            "src": "1660:9:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                              "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                            }
                          },
                          "id": 11261,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 11260,
                            "name": "_proposalId",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11256,
                            "src": "1670:11:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "1660:22:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                            "typeString": "struct AbsoluteVote.Proposal storage ref"
                          }
                        },
                        "id": 11262,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "open",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11214,
                        "src": "1660:27:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 11258,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "1652:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 11263,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "1652:36:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11264,
                  "nodeType": "ExpressionStatement",
                  "src": "1652:36:55"
                },
                {
                  "id": 11265,
                  "nodeType": "PlaceholderStatement",
                  "src": "1698:1:55"
                }
              ]
            },
            "documentation": "@dev Check that the proposal is votable (open and not executed yet)",
            "id": 11267,
            "name": "votable",
            "nodeType": "ModifierDefinition",
            "parameters": {
              "id": 11257,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11256,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11267,
                  "src": "1621:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11255,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "1621:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "1620:21:55"
            },
            "src": "1604:102:55",
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11410,
              "nodeType": "Block",
              "src": "2257:1143:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 11286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 11281,
                              "name": "parameters",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11241,
                              "src": "2328:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$11205_storage_$",
                                "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                              }
                            },
                            "id": 11283,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11282,
                              "name": "_paramsHash",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11271,
                              "src": "2339:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2328:23:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Parameters_$11205_storage",
                              "typeString": "struct AbsoluteVote.Parameters storage ref"
                            }
                          },
                          "id": 11284,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "precReq",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11202,
                          "src": "2328:31:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11285,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2362:1:55",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "2328:35:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 11280,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "2320:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 11287,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2320:44:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11288,
                  "nodeType": "ExpressionStatement",
                  "src": "2320:44:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 11296,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11292,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11290,
                            "name": "_numOfChoices",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11269,
                            "src": "2382:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11291,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2398:1:55",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2382:17:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11295,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11293,
                            "name": "_numOfChoices",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11269,
                            "src": "2403:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11294,
                            "name": "MAX_NUM_OF_CHOICES",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11252,
                            "src": "2420:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2403:35:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2382:56:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 11289,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "2374:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 11297,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2374:65:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11298,
                  "nodeType": "ExpressionStatement",
                  "src": "2374:65:55"
                },
                {
                  "assignments": [
                    11300
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11300,
                      "name": "proposalId",
                      "nodeType": "VariableDeclaration",
                      "scope": 11410,
                      "src": "2482:18:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11299,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2482:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11308,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11304,
                            "name": "this",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16852,
                            "src": "2530:4:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_AbsoluteVote_$11985",
                              "typeString": "contract AbsoluteVote"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11305,
                            "name": "proposalsCnt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11254,
                            "src": "2536:12:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_contract$_AbsoluteVote_$11985",
                              "typeString": "contract AbsoluteVote"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 11302,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16769,
                            "src": "2513:3:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 11303,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2513:16:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 11306,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2513:36:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 11301,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16776,
                      "src": "2503:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 11307,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "2503:47:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2482:68:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11314,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "id": 11309,
                      "name": "proposalsCnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11254,
                      "src": "2560:12:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 11312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2592:1:55",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          },
                          "value": "1"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_1_by_1",
                            "typeString": "int_const 1"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 11310,
                          "name": "proposalsCnt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11254,
                          "src": "2575:12:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11311,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "2575:16:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 11313,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2575:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2560:34:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11315,
                  "nodeType": "ExpressionStatement",
                  "src": "2560:34:55"
                },
                {
                  "assignments": [
                    11317
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11317,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 11410,
                      "src": "2630:24:55",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11316,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11231,
                        "src": "2630:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11318,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "2630:24:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11323,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11319,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11317,
                        "src": "2664:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 11321,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "numOfChoices",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11218,
                      "src": "2664:21:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 11322,
                      "name": "_numOfChoices",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11269,
                      "src": "2688:13:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "2664:37:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11324,
                  "nodeType": "ExpressionStatement",
                  "src": "2664:37:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11329,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11325,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11317,
                        "src": "2711:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 11327,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11220,
                      "src": "2711:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 11328,
                      "name": "_paramsHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11271,
                      "src": "2733:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2711:33:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 11330,
                  "nodeType": "ExpressionStatement",
                  "src": "2711:33:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11336,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11331,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11317,
                        "src": "2754:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 11333,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "callbacks",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11216,
                      "src": "2754:18:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11334,
                        "name": "msg",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16782,
                        "src": "2775:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_magic_message",
                          "typeString": "msg"
                        }
                      },
                      "id": 11335,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "sender",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": null,
                      "src": "2775:10:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2754:31:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 11337,
                  "nodeType": "ExpressionStatement",
                  "src": "2754:31:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11349,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11338,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11317,
                        "src": "2795:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 11340,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "organizationId",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11212,
                      "src": "2795:23:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11344,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16782,
                                "src": "2848:3:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 11345,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2848:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11346,
                              "name": "_organization",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11275,
                              "src": "2860:13:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 11342,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16769,
                              "src": "2831:3:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 11343,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodePacked",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2831:16:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function () pure returns (bytes memory)"
                            }
                          },
                          "id": 11347,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2831:43:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 11341,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 16776,
                        "src": "2821:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 11348,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "2821:54:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "src": "2795:80:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "id": 11350,
                  "nodeType": "ExpressionStatement",
                  "src": "2795:80:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11355,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11351,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11317,
                        "src": "2885:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                          "typeString": "struct AbsoluteVote.Proposal memory"
                        }
                      },
                      "id": 11353,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "open",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11214,
                      "src": "2885:13:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "hexValue": "74727565",
                      "id": 11354,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "bool",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "2901:4:55",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "value": "true"
                    },
                    "src": "2885:20:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11356,
                  "nodeType": "ExpressionStatement",
                  "src": "2885:20:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11361,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11357,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11245,
                        "src": "2915:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 11359,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11358,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11300,
                        "src": "2925:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "2915:21:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "id": 11360,
                      "name": "proposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11317,
                      "src": "2939:8:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                        "typeString": "struct AbsoluteVote.Proposal memory"
                      }
                    },
                    "src": "2915:32:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "id": 11362,
                  "nodeType": "ExpressionStatement",
                  "src": "2915:32:55"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 11370,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11363,
                        "name": "organizations",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11249,
                        "src": "2961:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                          "typeString": "mapping(bytes32 => address)"
                        }
                      },
                      "id": 11366,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11364,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11317,
                          "src": "2975:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                            "typeString": "struct AbsoluteVote.Proposal memory"
                          }
                        },
                        "id": 11365,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "organizationId",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11212,
                        "src": "2975:23:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "2961:38:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3011:1:55",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 11367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "3003:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 11369,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "3003:10:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "2961:52:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11395,
                  "nodeType": "IfStatement",
                  "src": "2957:292:55",
                  "trueBody": {
                    "id": 11394,
                    "nodeType": "Block",
                    "src": "3015:234:55",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 11375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11371,
                            "name": "_organization",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11275,
                            "src": "3033:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 11373,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3058:1:55",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 11372,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3050:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": "address"
                            },
                            "id": 11374,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3050:10:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "3033:27:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": {
                          "id": 11392,
                          "nodeType": "Block",
                          "src": "3152:87:55",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11390,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11385,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11249,
                                    "src": "3170:13:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 11388,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11386,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11317,
                                      "src": "3184:8:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                                        "typeString": "struct AbsoluteVote.Proposal memory"
                                      }
                                    },
                                    "id": 11387,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 11212,
                                    "src": "3184:23:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3170:38:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 11389,
                                  "name": "_organization",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11275,
                                  "src": "3211:13:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "3170:54:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 11391,
                              "nodeType": "ExpressionStatement",
                              "src": "3170:54:55"
                            }
                          ]
                        },
                        "id": 11393,
                        "nodeType": "IfStatement",
                        "src": "3029:210:55",
                        "trueBody": {
                          "id": 11384,
                          "nodeType": "Block",
                          "src": "3062:84:55",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 11382,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 11376,
                                    "name": "organizations",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11249,
                                    "src": "3080:13:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                      "typeString": "mapping(bytes32 => address)"
                                    }
                                  },
                                  "id": 11379,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 11377,
                                      "name": "proposal",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11317,
                                      "src": "3094:8:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                                        "typeString": "struct AbsoluteVote.Proposal memory"
                                      }
                                    },
                                    "id": 11378,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "organizationId",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 11212,
                                    "src": "3094:23:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": true,
                                  "nodeType": "IndexAccess",
                                  "src": "3080:38:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 11380,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 16782,
                                    "src": "3121:3:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 11381,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "3121:10:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "3080:51:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 11383,
                              "nodeType": "ExpressionStatement",
                              "src": "3080:51:55"
                            }
                          ]
                        }
                      }
                    ]
                  }
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11397,
                        "name": "proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11300,
                        "src": "3275:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11398,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11249,
                          "src": "3287:13:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 11401,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11399,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11317,
                            "src": "3301:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                              "typeString": "struct AbsoluteVote.Proposal memory"
                            }
                          },
                          "id": 11400,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11212,
                          "src": "3301:23:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "3287:38:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11402,
                        "name": "_numOfChoices",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11269,
                        "src": "3327:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11403,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16782,
                          "src": "3342:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 11404,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "3342:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11405,
                        "name": "_paramsHash",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11271,
                        "src": "3354:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 11396,
                      "name": "NewProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15079,
                      "src": "3263:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_address_$_t_bytes32_$returns$__$",
                        "typeString": "function (bytes32,address,uint256,address,bytes32)"
                      }
                    },
                    "id": 11406,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "3263:103:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11407,
                  "nodeType": "EmitStatement",
                  "src": "3258:108:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11408,
                    "name": "proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11300,
                    "src": "3383:10:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11279,
                  "id": 11409,
                  "nodeType": "Return",
                  "src": "3376:17:55"
                }
              ]
            },
            "documentation": "@dev register a new proposal with the given parameters. Every proposal has a unique ID which is being\ngenerated by calculating keccak256 of a incremented counter.\n@param _numOfChoices number of voting choices\n@param _paramsHash defined the parameters of the voting machine used for this proposal\n@param _organization address\n@return proposal's id.",
            "id": 11411,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "propose",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11276,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11269,
                  "name": "_numOfChoices",
                  "nodeType": "VariableDeclaration",
                  "scope": 11411,
                  "src": "2135:21:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11268,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2135:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11271,
                  "name": "_paramsHash",
                  "nodeType": "VariableDeclaration",
                  "scope": 11411,
                  "src": "2158:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11270,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2158:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11273,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11411,
                  "src": "2179:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11272,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2179:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11275,
                  "name": "_organization",
                  "nodeType": "VariableDeclaration",
                  "scope": 11411,
                  "src": "2188:21:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11274,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2188:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2134:76:55"
            },
            "returnParameters": {
              "id": 11279,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11278,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11411,
                  "src": "2244:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11277,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "2244:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "2243:9:55"
            },
            "scope": 11985,
            "src": "2118:1282:55",
            "stateMutability": "nonpayable",
            "superFunction": 15128,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11476,
              "nodeType": "Block",
              "src": "4005:416:55",
              "statements": [
                {
                  "assignments": [
                    11428
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11428,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 11476,
                      "src": "4016:25:55",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11427,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11231,
                        "src": "4016:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11432,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11429,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11245,
                      "src": "4044:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 11431,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11430,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11413,
                      "src": "4054:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4044:22:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4016:50:55"
                },
                {
                  "assignments": [
                    11434
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11434,
                      "name": "params",
                      "nodeType": "VariableDeclaration",
                      "scope": 11476,
                      "src": "4076:24:55",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$11205_memory_ptr",
                        "typeString": "struct AbsoluteVote.Parameters"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11433,
                        "name": "Parameters",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11205,
                        "src": "4076:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$11205_storage_ptr",
                          "typeString": "struct AbsoluteVote.Parameters"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11439,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11435,
                      "name": "parameters",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11241,
                      "src": "4103:10:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$11205_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                      }
                    },
                    "id": 11438,
                    "indexExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11436,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11428,
                        "src": "4114:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 11437,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "paramsHash",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11220,
                      "src": "4114:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "4103:31:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$11205_storage",
                      "typeString": "struct AbsoluteVote.Parameters storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4076:58:55"
                },
                {
                  "assignments": [
                    11441
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11441,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 11476,
                      "src": "4144:13:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 11440,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4144:7:55",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11442,
                  "initialValue": null,
                  "nodeType": "VariableDeclarationStatement",
                  "src": "4144:13:55"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "id": 11448,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11443,
                        "name": "params",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11434,
                        "src": "4171:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Parameters_$11205_memory_ptr",
                          "typeString": "struct AbsoluteVote.Parameters memory"
                        }
                      },
                      "id": 11444,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voteOnBehalf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11204,
                      "src": "4171:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11446,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4202:1:55",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          }
                        ],
                        "id": 11445,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "lValueRequested": false,
                        "nodeType": "ElementaryTypeNameExpression",
                        "src": "4194:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_address_$",
                          "typeString": "type(address)"
                        },
                        "typeName": "address"
                      },
                      "id": 11447,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "typeConversion",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "4194:10:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address_payable",
                        "typeString": "address payable"
                      }
                    },
                    "src": "4171:33:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": {
                    "id": 11467,
                    "nodeType": "Block",
                    "src": "4307:43:55",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11462,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11441,
                            "src": "4321:5:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11463,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 16782,
                              "src": "4329:3:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 11464,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4329:10:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "4321:18:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11466,
                        "nodeType": "ExpressionStatement",
                        "src": "4321:18:55"
                      }
                    ]
                  },
                  "id": 11468,
                  "nodeType": "IfStatement",
                  "src": "4167:183:55",
                  "trueBody": {
                    "id": 11461,
                    "nodeType": "Block",
                    "src": "4206:95:55",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 11454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11450,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 16782,
                                  "src": "4228:3:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 11451,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4228:10:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11452,
                                  "name": "params",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11434,
                                  "src": "4242:6:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Parameters_$11205_memory_ptr",
                                    "typeString": "struct AbsoluteVote.Parameters memory"
                                  }
                                },
                                "id": 11453,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "voteOnBehalf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11204,
                                "src": "4242:19:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4228:33:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 11449,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              16785,
                              16786
                            ],
                            "referencedDeclaration": 16785,
                            "src": "4220:7:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 11455,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4220:42:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11456,
                        "nodeType": "ExpressionStatement",
                        "src": "4220:42:55"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11459,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11457,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11441,
                            "src": "4276:5:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11458,
                            "name": "_voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11419,
                            "src": "4284:6:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "4276:14:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 11460,
                        "nodeType": "ExpressionStatement",
                        "src": "4276:14:55"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11470,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11413,
                        "src": "4379:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11471,
                        "name": "voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11441,
                        "src": "4392:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11472,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11415,
                        "src": "4399:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11473,
                        "name": "_amount",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11417,
                        "src": "4406:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11469,
                      "name": "internalVote",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11984,
                      "src": "4366:12:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_bool_$",
                        "typeString": "function (bytes32,address,uint256,uint256) returns (bool)"
                      }
                    },
                    "id": 11474,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4366:48:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11426,
                  "id": 11475,
                  "nodeType": "Return",
                  "src": "4359:55:55"
                }
              ]
            },
            "documentation": "@dev voting function\n@param _proposalId id of the proposal\n@param _vote a value between 0 to and the proposal number of choices.\n@param _amount the reputation amount to vote with . if _amount == 0 it will use all voter reputation.\n@param _voter voter address\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 11477,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11422,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11413,
                    "src": "3962:11:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 11423,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11421,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 11267,
                  "src": "3954:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "3954:20:55"
              }
            ],
            "name": "vote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11420,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11413,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11477,
                  "src": "3836:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11412,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "3836:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11415,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 11477,
                  "src": "3865:13:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11414,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3865:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11417,
                  "name": "_amount",
                  "nodeType": "VariableDeclaration",
                  "scope": 11477,
                  "src": "3888:15:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11416,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3888:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11419,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 11477,
                  "src": "3913:14:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11418,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3913:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3826:102:55"
            },
            "returnParameters": {
              "id": 11426,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11425,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11477,
                  "src": "3991:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11424,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "3991:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "3990:6:55"
            },
            "scope": 11985,
            "src": "3813:608:55",
            "stateMutability": "nonpayable",
            "superFunction": 15141,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11491,
              "nodeType": "Block",
              "src": "4695:60:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11486,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11479,
                        "src": "4724:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11487,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 16782,
                          "src": "4737:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 11488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sender",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "4737:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address_payable",
                          "typeString": "address payable"
                        }
                      ],
                      "id": 11485,
                      "name": "cancelVoteInternal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11719,
                      "src": "4705:18:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address)"
                      }
                    },
                    "id": 11489,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "4705:43:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11490,
                  "nodeType": "ExpressionStatement",
                  "src": "4705:43:55"
                }
              ]
            },
            "documentation": "@dev Cancel the vote of the msg.sender: subtract the reputation amount from the votes\nand delete the voter from the proposal struct\n@param _proposalId id of the proposal",
            "id": 11492,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11482,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11479,
                    "src": "4682:11:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 11483,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11481,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 11267,
                  "src": "4674:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "4674:20:55"
              }
            ],
            "name": "cancelVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11480,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11479,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11492,
                  "src": "4644:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11478,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "4644:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "4643:21:55"
            },
            "returnParameters": {
              "id": 11484,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "4695:0:55"
            },
            "scope": 11985,
            "src": "4624:131:55",
            "stateMutability": "nonpayable",
            "superFunction": 15146,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11506,
              "nodeType": "Block",
              "src": "5101:45:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11503,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11494,
                        "src": "5127:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 11502,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11847,
                      "src": "5118:8:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 11504,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "5118:21:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11501,
                  "id": 11505,
                  "nodeType": "Return",
                  "src": "5111:28:55"
                }
              ]
            },
            "documentation": "@dev execute check if the proposal has been decided, and if so, execute the proposal\n@param _proposalId the id of the proposal\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 11507,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11497,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11494,
                    "src": "5074:11:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 11498,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11496,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 11267,
                  "src": "5066:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "5066:20:55"
              }
            ],
            "name": "execute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11494,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11507,
                  "src": "5036:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11493,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5036:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5035:21:55"
            },
            "returnParameters": {
              "id": 11501,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11500,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11507,
                  "src": "5095:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11499,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "5095:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5094:6:55"
            },
            "scope": 11985,
            "src": "5019:127:55",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11519,
              "nodeType": "Block",
              "src": "5465:59:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11514,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11245,
                        "src": "5482:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 11516,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11515,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11509,
                        "src": "5492:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "5482:22:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "id": 11517,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "numOfChoices",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 11218,
                    "src": "5482:35:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11513,
                  "id": 11518,
                  "nodeType": "Return",
                  "src": "5475:42:55"
                }
              ]
            },
            "documentation": "@dev getNumberOfChoices returns the number of choices possible in this proposal\nexcluding the abstain vote (0)\n@param _proposalId the ID of the proposal\n@return uint256 that contains number of choices",
            "id": 11520,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getNumberOfChoices",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11510,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11509,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11520,
                  "src": "5413:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11508,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5413:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5412:21:55"
            },
            "returnParameters": {
              "id": 11513,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11512,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11520,
                  "src": "5456:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11511,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "5456:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5455:9:55"
            },
            "scope": 11985,
            "src": "5385:139:55",
            "stateMutability": "view",
            "superFunction": 15153,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11546,
              "nodeType": "Block",
              "src": "5959:122:55",
              "statements": [
                {
                  "assignments": [
                    11532
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11532,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 11546,
                      "src": "5969:18:55",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                        "typeString": "struct AbsoluteVote.Voter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11531,
                        "name": "Voter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11210,
                        "src": "5969:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$11210_storage_ptr",
                          "typeString": "struct AbsoluteVote.Voter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11539,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11533,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11245,
                          "src": "5990:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                            "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                          }
                        },
                        "id": 11535,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11534,
                          "name": "_proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11522,
                          "src": "6000:11:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5990:22:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                          "typeString": "struct AbsoluteVote.Proposal storage ref"
                        }
                      },
                      "id": 11536,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11230,
                      "src": "5990:29:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$11210_storage_$",
                        "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                      }
                    },
                    "id": 11538,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11537,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11524,
                      "src": "6020:6:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "5990:37:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$11210_storage",
                      "typeString": "struct AbsoluteVote.Voter storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "5969:58:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11540,
                          "name": "voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11532,
                          "src": "6045:5:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                            "typeString": "struct AbsoluteVote.Voter memory"
                          }
                        },
                        "id": 11541,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11207,
                        "src": "6045:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11542,
                          "name": "voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11532,
                          "src": "6057:5:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                            "typeString": "struct AbsoluteVote.Voter memory"
                          }
                        },
                        "id": 11543,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "reputation",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11209,
                        "src": "6057:16:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 11544,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "6044:30:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                      "typeString": "tuple(uint256,uint256)"
                    }
                  },
                  "functionReturnParameters": 11530,
                  "id": 11545,
                  "nodeType": "Return",
                  "src": "6037:37:55"
                }
              ]
            },
            "documentation": "@dev voteInfo returns the vote and the amount of reputation of the user committed to this proposal\n@param _proposalId the ID of the proposal\n@param _voter the address of the voter\n@return uint256 vote - the voters vote\n       uint256 reputation - amount of reputation committed by _voter to _proposalId",
            "id": 11547,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "voteInfo",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11525,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11522,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11547,
                  "src": "5888:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11521,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "5888:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11524,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 11547,
                  "src": "5909:14:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11523,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "5909:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5887:37:55"
            },
            "returnParameters": {
              "id": 11530,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11527,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11547,
                  "src": "5947:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11526,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5947:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11529,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11547,
                  "src": "5953:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11528,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "5953:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "5946:12:55"
            },
            "scope": 11985,
            "src": "5870:211:55",
            "stateMutability": "view",
            "superFunction": null,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11563,
              "nodeType": "Block",
              "src": "6430:61:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11556,
                          "name": "proposals",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11245,
                          "src": "6447:9:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                            "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                          }
                        },
                        "id": 11558,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11557,
                          "name": "_proposalId",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11549,
                          "src": "6457:11:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "6447:22:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                          "typeString": "struct AbsoluteVote.Proposal storage ref"
                        }
                      },
                      "id": 11559,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "votes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11226,
                      "src": "6447:28:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                        "typeString": "mapping(uint256 => uint256)"
                      }
                    },
                    "id": 11561,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11560,
                      "name": "_choice",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11551,
                      "src": "6476:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "6447:37:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "functionReturnParameters": 11555,
                  "id": 11562,
                  "nodeType": "Return",
                  "src": "6440:44:55"
                }
              ]
            },
            "documentation": "@dev voteStatus returns the reputation voted for a proposal for a specific voting choice.\n@param _proposalId the ID of the proposal\n@param _choice the index in the\n@return voted reputation for the given choice",
            "id": 11564,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "voteStatus",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11552,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11549,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11564,
                  "src": "6361:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11548,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6361:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11551,
                  "name": "_choice",
                  "nodeType": "VariableDeclaration",
                  "scope": 11564,
                  "src": "6382:15:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11550,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6382:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6360:38:55"
            },
            "returnParameters": {
              "id": 11555,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11554,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11564,
                  "src": "6421:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11553,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "6421:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6420:9:55"
            },
            "scope": 11985,
            "src": "6341:150:55",
            "stateMutability": "view",
            "superFunction": 15169,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11576,
              "nodeType": "Block",
              "src": "6721:52:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11571,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11245,
                        "src": "6739:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 11573,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11572,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11566,
                        "src": "6749:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "6739:22:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "id": 11574,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "open",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 11214,
                    "src": "6739:27:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11570,
                  "id": 11575,
                  "nodeType": "Return",
                  "src": "6731:35:55"
                }
              ]
            },
            "documentation": "@dev isVotable check if the proposal is votable\n@param _proposalId the ID of the proposal\n@return bool true or false",
            "id": 11577,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isVotable",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11567,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11566,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11577,
                  "src": "6672:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11565,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "6672:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6671:21:55"
            },
            "returnParameters": {
              "id": 11570,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11569,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11577,
                  "src": "6715:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11568,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6715:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6714:6:55"
            },
            "scope": 11985,
            "src": "6653:120:55",
            "stateMutability": "view",
            "superFunction": 15160,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11584,
              "nodeType": "Block",
              "src": "6958:28:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "74727565",
                    "id": 11582,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "6975:4:55",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "true"
                  },
                  "functionReturnParameters": 11581,
                  "id": 11583,
                  "nodeType": "Return",
                  "src": "6968:11:55"
                }
              ]
            },
            "documentation": "@dev isAbstainAllow returns if the voting machine allow abstain (0)\n@return bool true or false",
            "id": 11585,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "isAbstainAllow",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11578,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "6927:2:55"
            },
            "returnParameters": {
              "id": 11581,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11580,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11585,
                  "src": "6952:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11579,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "6952:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "6951:6:55"
            },
            "scope": 11985,
            "src": "6904:82:55",
            "stateMutability": "pure",
            "superFunction": 15174,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11596,
              "nodeType": "Block",
              "src": "7282:47:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "components": [
                      {
                        "argumentTypes": null,
                        "hexValue": "30",
                        "id": 11592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "7300:1:55",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_0_by_1",
                          "typeString": "int_const 0"
                        },
                        "value": "0"
                      },
                      {
                        "argumentTypes": null,
                        "id": 11593,
                        "name": "MAX_NUM_OF_CHOICES",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11252,
                        "src": "7303:18:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 11594,
                    "isConstant": false,
                    "isInlineArray": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "TupleExpression",
                    "src": "7299:23:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$_t_rational_0_by_1_$_t_uint256_$",
                      "typeString": "tuple(int_const 0,uint256)"
                    }
                  },
                  "functionReturnParameters": 11591,
                  "id": 11595,
                  "nodeType": "Return",
                  "src": "7292:30:55"
                }
              ]
            },
            "documentation": "@dev getAllowedRangeOfChoices returns the allowed range of choices for a voting machine.\n@return min - minimum number of choices\nmax - maximum number of choices",
            "id": 11597,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getAllowedRangeOfChoices",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11586,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "7231:2:55"
            },
            "returnParameters": {
              "id": 11591,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11588,
                  "name": "min",
                  "nodeType": "VariableDeclaration",
                  "scope": 11597,
                  "src": "7256:11:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11587,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7256:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11590,
                  "name": "max",
                  "nodeType": "VariableDeclaration",
                  "scope": 11597,
                  "src": "7269:11:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11589,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7269:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7255:26:55"
            },
            "scope": 11985,
            "src": "7198:131:55",
            "stateMutability": "pure",
            "superFunction": 15181,
            "visibility": "external"
          },
          {
            "body": {
              "id": 11634,
              "nodeType": "Block",
              "src": "7521:304:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 11613,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11609,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11607,
                            "name": "_precReq",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11599,
                            "src": "7539:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "<=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "313030",
                            "id": 11608,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7551:3:55",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_100_by_1",
                              "typeString": "int_const 100"
                            },
                            "value": "100"
                          },
                          "src": "7539:15:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 11610,
                            "name": "_precReq",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11599,
                            "src": "7558:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 11611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7569:1:55",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "7558:12:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "7539:31:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 11606,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "7531:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 11614,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7531:40:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11615,
                  "nodeType": "ExpressionStatement",
                  "src": "7531:40:55"
                },
                {
                  "assignments": [
                    11617
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11617,
                      "name": "hashedParameters",
                      "nodeType": "VariableDeclaration",
                      "scope": 11634,
                      "src": "7581:24:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 11616,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "7581:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11622,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11619,
                        "name": "_precReq",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11599,
                        "src": "7626:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11620,
                        "name": "_voteOnBehalf",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11601,
                        "src": "7636:13:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11618,
                      "name": "getParametersHash",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11653,
                      "src": "7608:17:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_address_$returns$_t_bytes32_$",
                        "typeString": "function (uint256,address) pure returns (bytes32)"
                      }
                    },
                    "id": 11621,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "7608:42:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "7581:69:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11630,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11623,
                        "name": "parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11241,
                        "src": "7660:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$11205_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                        }
                      },
                      "id": 11625,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11624,
                        "name": "hashedParameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11617,
                        "src": "7671:16:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "7660:28:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$11205_storage",
                        "typeString": "struct AbsoluteVote.Parameters storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11627,
                          "name": "_precReq",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11599,
                          "src": "7725:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11628,
                          "name": "_voteOnBehalf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11601,
                          "src": "7761:13:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11626,
                        "name": "Parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11205,
                        "src": "7691:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Parameters_$11205_storage_ptr_$",
                          "typeString": "type(struct AbsoluteVote.Parameters storage pointer)"
                        }
                      },
                      "id": 11629,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "precReq",
                        "voteOnBehalf"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "7691:94:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$11205_memory",
                        "typeString": "struct AbsoluteVote.Parameters memory"
                      }
                    },
                    "src": "7660:125:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Parameters_$11205_storage",
                      "typeString": "struct AbsoluteVote.Parameters storage ref"
                    }
                  },
                  "id": 11631,
                  "nodeType": "ExpressionStatement",
                  "src": "7660:125:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11632,
                    "name": "hashedParameters",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11617,
                    "src": "7802:16:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11605,
                  "id": 11633,
                  "nodeType": "Return",
                  "src": "7795:23:55"
                }
              ]
            },
            "documentation": "@dev hash the parameters, save them if necessary, and return the hash value",
            "id": 11635,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "setParameters",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11602,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11599,
                  "name": "_precReq",
                  "nodeType": "VariableDeclaration",
                  "scope": 11635,
                  "src": "7456:16:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11598,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7456:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11601,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 11635,
                  "src": "7474:21:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11600,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7474:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7455:41:55"
            },
            "returnParameters": {
              "id": 11605,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11604,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11635,
                  "src": "7512:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11603,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "7512:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7511:9:55"
            },
            "scope": 11985,
            "src": "7433:392:55",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11652,
              "nodeType": "Block",
              "src": "8010:76:55",
              "statements": [
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 11647,
                            "name": "_precReq",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11637,
                            "src": "8054:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 11648,
                            "name": "_voteOnBehalf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11639,
                            "src": "8064:13:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 11645,
                            "name": "abi",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 16769,
                            "src": "8037:3:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_abi",
                              "typeString": "abi"
                            }
                          },
                          "id": 11646,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "memberName": "encodePacked",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "8037:16:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                            "typeString": "function () pure returns (bytes memory)"
                          }
                        },
                        "id": 11649,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8037:41:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      ],
                      "id": 11644,
                      "name": "keccak256",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 16776,
                      "src": "8027:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                        "typeString": "function (bytes memory) pure returns (bytes32)"
                      }
                    },
                    "id": 11650,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8027:52:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "functionReturnParameters": 11643,
                  "id": 11651,
                  "nodeType": "Return",
                  "src": "8020:59:55"
                }
              ]
            },
            "documentation": "@dev hashParameters returns a hash of the given parameters",
            "id": 11653,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "getParametersHash",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11640,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11637,
                  "name": "_precReq",
                  "nodeType": "VariableDeclaration",
                  "scope": 11653,
                  "src": "7940:16:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11636,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "7940:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11639,
                  "name": "_voteOnBehalf",
                  "nodeType": "VariableDeclaration",
                  "scope": 11653,
                  "src": "7958:21:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11638,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "7958:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "7939:41:55"
            },
            "returnParameters": {
              "id": 11643,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11642,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11653,
                  "src": "8001:7:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11641,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8001:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8000:9:55"
            },
            "scope": 11985,
            "src": "7913:173:55",
            "stateMutability": "pure",
            "superFunction": null,
            "visibility": "public"
          },
          {
            "body": {
              "id": 11718,
              "nodeType": "Block",
              "src": "8166:413:55",
              "statements": [
                {
                  "assignments": [
                    11661
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11661,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 11718,
                      "src": "8176:25:55",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11660,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11231,
                        "src": "8176:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11665,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11662,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11245,
                      "src": "8204:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 11664,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11663,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11655,
                      "src": "8214:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8204:22:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8176:50:55"
                },
                {
                  "assignments": [
                    11667
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11667,
                      "name": "voter",
                      "nodeType": "VariableDeclaration",
                      "scope": 11718,
                      "src": "8236:18:55",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                        "typeString": "struct AbsoluteVote.Voter"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11666,
                        "name": "Voter",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11210,
                        "src": "8236:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$11210_storage_ptr",
                          "typeString": "struct AbsoluteVote.Voter"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11672,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11668,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11661,
                        "src": "8257:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 11669,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "voters",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11230,
                      "src": "8257:15:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$11210_storage_$",
                        "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                      }
                    },
                    "id": 11671,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11670,
                      "name": "_voter",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11657,
                      "src": "8273:6:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8257:23:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$11210_storage",
                      "typeString": "struct AbsoluteVote.Voter storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8236:44:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11689,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11673,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11661,
                          "src": "8290:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 11677,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11226,
                        "src": "8290:14:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 11678,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11675,
                          "name": "voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11667,
                          "src": "8305:5:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                            "typeString": "struct AbsoluteVote.Voter memory"
                          }
                        },
                        "id": 11676,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "vote",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11207,
                        "src": "8305:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8290:26:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11686,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11667,
                            "src": "8352:5:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                              "typeString": "struct AbsoluteVote.Voter memory"
                            }
                          },
                          "id": 11687,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reputation",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11209,
                          "src": "8352:16:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11679,
                                  "name": "proposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11661,
                                  "src": "8320:8:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                    "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                  }
                                },
                                "id": 11680,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "votes",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11226,
                                "src": "8320:14:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                  "typeString": "mapping(uint256 => uint256)"
                                }
                              },
                              "id": 11683,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 11681,
                                  "name": "voter",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11667,
                                  "src": "8335:5:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                                    "typeString": "struct AbsoluteVote.Voter memory"
                                  }
                                },
                                "id": 11682,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "vote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 11207,
                                "src": "8335:10:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "8320:26:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 11684,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8319:28:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11685,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15874,
                        "src": "8319:32:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 11688,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8319:50:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8290:79:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11690,
                  "nodeType": "ExpressionStatement",
                  "src": "8290:79:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11701,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11691,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11661,
                        "src": "8379:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 11693,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11222,
                      "src": "8379:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11698,
                            "name": "voter",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11667,
                            "src": "8427:5:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Voter_$11210_memory_ptr",
                              "typeString": "struct AbsoluteVote.Voter memory"
                            }
                          },
                          "id": 11699,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "reputation",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11209,
                          "src": "8427:16:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11694,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11661,
                                "src": "8402:8:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "id": 11695,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "totalVotes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11222,
                              "src": "8402:19:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 11696,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "8401:21:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11697,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "sub",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15874,
                        "src": "8401:25:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 11700,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "8401:43:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8379:65:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11702,
                  "nodeType": "ExpressionStatement",
                  "src": "8379:65:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11707,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8454:30:55",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11703,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11661,
                          "src": "8461:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 11704,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11230,
                        "src": "8461:15:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$11210_storage_$",
                          "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                        }
                      },
                      "id": 11706,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11705,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11657,
                        "src": "8477:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8461:23:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$11210_storage",
                        "typeString": "struct AbsoluteVote.Voter storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11708,
                  "nodeType": "ExpressionStatement",
                  "src": "8454:30:55"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11710,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11655,
                        "src": "8512:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11711,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11249,
                          "src": "8525:13:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 11714,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11712,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11661,
                            "src": "8539:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 11713,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11212,
                          "src": "8539:23:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8525:38:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11715,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11657,
                        "src": "8565:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      ],
                      "id": 11709,
                      "name": "CancelVoting",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15115,
                      "src": "8499:12:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$returns$__$",
                        "typeString": "function (bytes32,address,address)"
                      }
                    },
                    "id": 11716,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "8499:73:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11717,
                  "nodeType": "EmitStatement",
                  "src": "8494:78:55"
                }
              ]
            },
            "documentation": null,
            "id": 11719,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "cancelVoteInternal",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11658,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11655,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11719,
                  "src": "8120:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11654,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8120:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11657,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 11719,
                  "src": "8141:14:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11656,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "8141:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8119:37:55"
            },
            "returnParameters": {
              "id": 11659,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8166:0:55"
            },
            "scope": 11985,
            "src": "8092:487:55",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11754,
              "nodeType": "Block",
              "src": "8639:225:55",
              "statements": [
                {
                  "assignments": [
                    11725
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11725,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 11754,
                      "src": "8649:25:55",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11724,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11231,
                        "src": "8649:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11729,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11726,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11245,
                      "src": "8677:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 11728,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11727,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11721,
                      "src": "8687:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "8677:22:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "8649:50:55"
                },
                {
                  "body": {
                    "id": 11747,
                    "nodeType": "Block",
                    "src": "8768:51:55",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "delete",
                          "prefix": true,
                          "src": "8782:26:55",
                          "subExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11741,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11725,
                                "src": "8789:8:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "id": 11742,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11226,
                              "src": "8789:14:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 11744,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11743,
                              "name": "cnt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11731,
                              "src": "8804:3:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": true,
                            "nodeType": "IndexAccess",
                            "src": "8789:19:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11746,
                        "nodeType": "ExpressionStatement",
                        "src": "8782:26:55"
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11737,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11734,
                      "name": "cnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11731,
                      "src": "8731:3:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11735,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11725,
                        "src": "8738:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 11736,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numOfChoices",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11218,
                      "src": "8738:21:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "8731:28:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11748,
                  "initializationExpression": {
                    "assignments": [
                      11731
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11731,
                        "name": "cnt",
                        "nodeType": "VariableDeclaration",
                        "scope": 11748,
                        "src": "8714:11:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11730,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "8714:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11733,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11732,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "8728:1:55",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "8714:15:55"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11739,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "8761:5:55",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11738,
                        "name": "cnt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11731,
                        "src": "8761:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11740,
                    "nodeType": "ExpressionStatement",
                    "src": "8761:5:55"
                  },
                  "nodeType": "ForStatement",
                  "src": "8709:110:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11752,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "UnaryOperation",
                    "operator": "delete",
                    "prefix": true,
                    "src": "8828:29:55",
                    "subExpression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11749,
                        "name": "proposals",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11245,
                        "src": "8835:9:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                        }
                      },
                      "id": 11751,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11750,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11721,
                        "src": "8845:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "8835:22:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                        "typeString": "struct AbsoluteVote.Proposal storage ref"
                      }
                    },
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11753,
                  "nodeType": "ExpressionStatement",
                  "src": "8828:29:55"
                }
              ]
            },
            "documentation": null,
            "id": 11755,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "deleteProposal",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11722,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11721,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11755,
                  "src": "8609:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11720,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "8609:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "8608:21:55"
            },
            "returnParameters": {
              "id": 11723,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "8639:0:55"
            },
            "scope": 11985,
            "src": "8585:279:55",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11846,
              "nodeType": "Block",
              "src": "9211:826:55",
              "statements": [
                {
                  "assignments": [
                    11766
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11766,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 11846,
                      "src": "9221:25:55",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11765,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11231,
                        "src": "9221:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11770,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11767,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11245,
                      "src": "9249:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 11769,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11768,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11757,
                      "src": "9259:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "9249:22:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9221:50:55"
                },
                {
                  "assignments": [
                    11772
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11772,
                      "name": "totalReputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 11846,
                      "src": "9281:23:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11771,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9281:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11780,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11778,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11757,
                        "src": "9392:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11774,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11766,
                              "src": "9347:8:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                "typeString": "struct AbsoluteVote.Proposal storage pointer"
                              }
                            },
                            "id": 11775,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11216,
                            "src": "9347:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 11773,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15258,
                          "src": "9315:31:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 11776,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9315:51:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 11777,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "getTotalReputationSupply",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15239,
                      "src": "9315:76:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 11779,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "9315:89:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9281:123:55"
                },
                {
                  "assignments": [
                    11782
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11782,
                      "name": "precReq",
                      "nodeType": "VariableDeclaration",
                      "scope": 11846,
                      "src": "9414:15:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11781,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "9414:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11788,
                  "initialValue": {
                    "argumentTypes": null,
                    "expression": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "id": 11783,
                        "name": "parameters",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11241,
                        "src": "9432:10:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Parameters_$11205_storage_$",
                          "typeString": "mapping(bytes32 => struct AbsoluteVote.Parameters storage ref)"
                        }
                      },
                      "id": 11786,
                      "indexExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11784,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11766,
                          "src": "9443:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 11785,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "paramsHash",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11220,
                        "src": "9443:19:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "IndexAccess",
                      "src": "9432:31:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Parameters_$11205_storage",
                        "typeString": "struct AbsoluteVote.Parameters storage ref"
                      }
                    },
                    "id": 11787,
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "memberName": "precReq",
                    "nodeType": "MemberAccess",
                    "referencedDeclaration": 11202,
                    "src": "9432:39:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "9414:57:55"
                },
                {
                  "body": {
                    "id": 11842,
                    "nodeType": "Block",
                    "src": "9585:424:55",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 11810,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11800,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11766,
                                "src": "9603:8:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "id": 11801,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "votes",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 11226,
                              "src": "9603:14:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                                "typeString": "mapping(uint256 => uint256)"
                              }
                            },
                            "id": 11803,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 11802,
                              "name": "cnt",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11790,
                              "src": "9618:3:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9603:19:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 11809,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 11806,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 11804,
                                    "name": "totalReputation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11772,
                                    "src": "9626:15:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "313030",
                                    "id": 11805,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9642:3:55",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_100_by_1",
                                      "typeString": "int_const 100"
                                    },
                                    "value": "100"
                                  },
                                  "src": "9626:19:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 11807,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "9625:21:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 11808,
                              "name": "precReq",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11782,
                              "src": "9647:7:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9625:29:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9603:51:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 11841,
                        "nodeType": "IfStatement",
                        "src": "9599:400:55",
                        "trueBody": {
                          "id": 11840,
                          "nodeType": "Block",
                          "src": "9656:343:55",
                          "statements": [
                            {
                              "assignments": [
                                11812
                              ],
                              "declarations": [
                                {
                                  "constant": false,
                                  "id": 11812,
                                  "name": "tmpProposal",
                                  "nodeType": "VariableDeclaration",
                                  "scope": 11840,
                                  "src": "9674:27:55",
                                  "stateVariable": false,
                                  "storageLocation": "memory",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                                    "typeString": "struct AbsoluteVote.Proposal"
                                  },
                                  "typeName": {
                                    "contractScope": null,
                                    "id": 11811,
                                    "name": "Proposal",
                                    "nodeType": "UserDefinedTypeName",
                                    "referencedDeclaration": 11231,
                                    "src": "9674:8:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                      "typeString": "struct AbsoluteVote.Proposal"
                                    }
                                  },
                                  "value": null,
                                  "visibility": "internal"
                                }
                              ],
                              "id": 11814,
                              "initialValue": {
                                "argumentTypes": null,
                                "id": 11813,
                                "name": "proposal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 11766,
                                "src": "9704:8:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                  "typeString": "struct AbsoluteVote.Proposal storage pointer"
                                }
                              },
                              "nodeType": "VariableDeclarationStatement",
                              "src": "9674:38:55"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11816,
                                    "name": "_proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11757,
                                    "src": "9745:11:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  ],
                                  "id": 11815,
                                  "name": "deleteProposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 11755,
                                  "src": "9730:14:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$__$",
                                    "typeString": "function (bytes32)"
                                  }
                                },
                                "id": 11817,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9730:27:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11818,
                              "nodeType": "ExpressionStatement",
                              "src": "9730:27:55"
                            },
                            {
                              "eventCall": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11820,
                                    "name": "_proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11757,
                                    "src": "9796:11:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 11821,
                                      "name": "organizations",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 11249,
                                      "src": "9809:13:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                                        "typeString": "mapping(bytes32 => address)"
                                      }
                                    },
                                    "id": 11824,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 11822,
                                        "name": "tmpProposal",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11812,
                                        "src": "9823:11:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                                          "typeString": "struct AbsoluteVote.Proposal memory"
                                        }
                                      },
                                      "id": 11823,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "organizationId",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 11212,
                                      "src": "9823:26:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes32",
                                        "typeString": "bytes32"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "9809:41:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 11825,
                                    "name": "cnt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11790,
                                    "src": "9852:3:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 11826,
                                    "name": "totalReputation",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11772,
                                    "src": "9857:15:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 11819,
                                  "name": "ExecuteProposal",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 15089,
                                  "src": "9780:15:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                                    "typeString": "function (bytes32,address,uint256,uint256)"
                                  }
                                },
                                "id": 11827,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9780:93:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$__$",
                                  "typeString": "tuple()"
                                }
                              },
                              "id": 11828,
                              "nodeType": "EmitStatement",
                              "src": "9775:98:55"
                            },
                            {
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 11834,
                                    "name": "_proposalId",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 11757,
                                    "src": "9962:11:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 11836,
                                        "name": "cnt",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 11790,
                                        "src": "9979:3:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "id": 11835,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "9975:3:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_int256_$",
                                        "typeString": "type(int256)"
                                      },
                                      "typeName": "int"
                                    },
                                    "id": 11837,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9975:8:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes32",
                                      "typeString": "bytes32"
                                    },
                                    {
                                      "typeIdentifier": "t_int256",
                                      "typeString": "int256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 11830,
                                          "name": "tmpProposal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 11812,
                                          "src": "9923:11:55",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_struct$_Proposal_$11231_memory_ptr",
                                            "typeString": "struct AbsoluteVote.Proposal memory"
                                          }
                                        },
                                        "id": 11831,
                                        "isConstant": false,
                                        "isLValue": true,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "callbacks",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 11216,
                                        "src": "9923:21:55",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 11829,
                                      "name": "ProposalExecuteInterface",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 15194,
                                      "src": "9898:24:55",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_ProposalExecuteInterface_$15194_$",
                                        "typeString": "type(contract ProposalExecuteInterface)"
                                      }
                                    },
                                    "id": 11832,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "9898:47:55",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_ProposalExecuteInterface_$15194",
                                      "typeString": "contract ProposalExecuteInterface"
                                    }
                                  },
                                  "id": 11833,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "executeProposal",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 15193,
                                  "src": "9898:63:55",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_bytes32_$_t_int256_$returns$_t_bool_$",
                                    "typeString": "function (bytes32,int256) external returns (bool)"
                                  }
                                },
                                "id": 11838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9898:86:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "functionReturnParameters": 11764,
                              "id": 11839,
                              "nodeType": "Return",
                              "src": "9891:93:55"
                            }
                          ]
                        }
                      }
                    ]
                  },
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11796,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11793,
                      "name": "cnt",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11790,
                      "src": "9548:3:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "<=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11794,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11766,
                        "src": "9555:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 11795,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "numOfChoices",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11218,
                      "src": "9555:21:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "9548:28:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "id": 11843,
                  "initializationExpression": {
                    "assignments": [
                      11790
                    ],
                    "declarations": [
                      {
                        "constant": false,
                        "id": 11790,
                        "name": "cnt",
                        "nodeType": "VariableDeclaration",
                        "scope": 11843,
                        "src": "9531:11:55",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "typeName": {
                          "id": 11789,
                          "name": "uint256",
                          "nodeType": "ElementaryTypeName",
                          "src": "9531:7:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "id": 11792,
                    "initialValue": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11791,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "9545:1:55",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "nodeType": "VariableDeclarationStatement",
                    "src": "9531:15:55"
                  },
                  "loopExpression": {
                    "expression": {
                      "argumentTypes": null,
                      "id": 11798,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "nodeType": "UnaryOperation",
                      "operator": "++",
                      "prefix": false,
                      "src": "9578:5:55",
                      "subExpression": {
                        "argumentTypes": null,
                        "id": 11797,
                        "name": "cnt",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11790,
                        "src": "9578:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "id": 11799,
                    "nodeType": "ExpressionStatement",
                    "src": "9578:5:55"
                  },
                  "nodeType": "ForStatement",
                  "src": "9526:483:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "hexValue": "66616c7365",
                    "id": 11844,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "bool",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "10025:5:55",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "value": "false"
                  },
                  "functionReturnParameters": 11764,
                  "id": 11845,
                  "nodeType": "Return",
                  "src": "10018:12:55"
                }
              ]
            },
            "documentation": "@dev execute check if the proposal has been decided, and if so, execute the proposal\n@param _proposalId the id of the proposal\n@return bool true - the proposal has been executed\n             false - otherwise.",
            "id": 11847,
            "implemented": true,
            "kind": "function",
            "modifiers": [
              {
                "arguments": [
                  {
                    "argumentTypes": null,
                    "id": 11760,
                    "name": "_proposalId",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11757,
                    "src": "9184:11:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  }
                ],
                "id": 11761,
                "modifierName": {
                  "argumentTypes": null,
                  "id": 11759,
                  "name": "votable",
                  "nodeType": "Identifier",
                  "overloadedDeclarations": [],
                  "referencedDeclaration": 11267,
                  "src": "9176:7:55",
                  "typeDescriptions": {
                    "typeIdentifier": "t_modifier$_t_bytes32_$",
                    "typeString": "modifier (bytes32)"
                  }
                },
                "nodeType": "ModifierInvocation",
                "src": "9176:20:55"
              }
            ],
            "name": "_execute",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11758,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11757,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "9146:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11756,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "9146:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9145:21:55"
            },
            "returnParameters": {
              "id": 11764,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11763,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11847,
                  "src": "9205:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11762,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "9205:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "9204:6:55"
            },
            "scope": 11985,
            "src": "9128:909:55",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          },
          {
            "body": {
              "id": 11983,
              "nodeType": "Block",
              "src": "10665:1227:55",
              "statements": [
                {
                  "assignments": [
                    11861
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11861,
                      "name": "proposal",
                      "nodeType": "VariableDeclaration",
                      "scope": 11983,
                      "src": "10675:25:55",
                      "stateVariable": false,
                      "storageLocation": "storage",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                        "typeString": "struct AbsoluteVote.Proposal"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 11860,
                        "name": "Proposal",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 11231,
                        "src": "10675:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11865,
                  "initialValue": {
                    "argumentTypes": null,
                    "baseExpression": {
                      "argumentTypes": null,
                      "id": 11862,
                      "name": "proposals",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11245,
                      "src": "10703:9:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_mapping$_t_bytes32_$_t_struct$_Proposal_$11231_storage_$",
                        "typeString": "mapping(bytes32 => struct AbsoluteVote.Proposal storage ref)"
                      }
                    },
                    "id": 11864,
                    "indexExpression": {
                      "argumentTypes": null,
                      "id": 11863,
                      "name": "_proposalId",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11849,
                      "src": "10713:11:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    },
                    "isConstant": false,
                    "isLValue": true,
                    "isPure": false,
                    "lValueRequested": false,
                    "nodeType": "IndexAccess",
                    "src": "10703:22:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Proposal_$11231_storage",
                      "typeString": "struct AbsoluteVote.Proposal storage ref"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10675:50:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 11870,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 11867,
                          "name": "_vote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11853,
                          "src": "10772:5:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11868,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11861,
                            "src": "10781:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 11869,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "numOfChoices",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11218,
                          "src": "10781:21:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10772:30:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 11866,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "10764:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 11871,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10764:39:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11872,
                  "nodeType": "ExpressionStatement",
                  "src": "10764:39:55"
                },
                {
                  "assignments": [
                    11874
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11874,
                      "name": "reputation",
                      "nodeType": "VariableDeclaration",
                      "scope": 11983,
                      "src": "10859:18:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11873,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "10859:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11883,
                  "initialValue": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11880,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11851,
                        "src": "10945:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11881,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11849,
                        "src": "10953:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11876,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11861,
                              "src": "10912:8:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                "typeString": "struct AbsoluteVote.Proposal storage pointer"
                              }
                            },
                            "id": 11877,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "callbacks",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11216,
                            "src": "10912:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 11875,
                          "name": "VotingMachineCallbacksInterface",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 15258,
                          "src": "10880:31:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_contract$_VotingMachineCallbacksInterface_$15258_$",
                            "typeString": "type(contract VotingMachineCallbacksInterface)"
                          }
                        },
                        "id": 11878,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10880:51:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_contract$_VotingMachineCallbacksInterface_$15258",
                          "typeString": "contract VotingMachineCallbacksInterface"
                        }
                      },
                      "id": 11879,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputationOf",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 15248,
                      "src": "10880:64:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_external_view$_t_address_$_t_bytes32_$returns$_t_uint256_$",
                        "typeString": "function (address,bytes32) view external returns (uint256)"
                      }
                    },
                    "id": 11882,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10880:85:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "10859:106:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 11887,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 11885,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11874,
                          "src": "10983:10:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 11886,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10996:1:55",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "10983:14:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "hexValue": "5f766f746572206d75737420686176652072657075746174696f6e",
                        "id": 11888,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "string",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "10999:29:55",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_stringliteral_904ad937a2b27da2b88c6196de3f24fd299b75859ba99719946b0bb0ef68cc41",
                          "typeString": "literal_string \"_voter must have reputation\""
                        },
                        "value": "_voter must have reputation"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        {
                          "typeIdentifier": "t_stringliteral_904ad937a2b27da2b88c6196de3f24fd299b75859ba99719946b0bb0ef68cc41",
                          "typeString": "literal_string \"_voter must have reputation\""
                        }
                      ],
                      "id": 11884,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16786,
                      "src": "10975:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                        "typeString": "function (bool,string memory) pure"
                      }
                    },
                    "id": 11889,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "10975:54:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11890,
                  "nodeType": "ExpressionStatement",
                  "src": "10975:54:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 11894,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 11892,
                          "name": "reputation",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11874,
                          "src": "11047:10:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 11893,
                          "name": "_rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11855,
                          "src": "11061:4:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11047:18:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 11891,
                      "name": "require",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [
                        16785,
                        16786
                      ],
                      "referencedDeclaration": 16785,
                      "src": "11039:7:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                        "typeString": "function (bool) pure"
                      }
                    },
                    "id": 11895,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11039:27:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11896,
                  "nodeType": "ExpressionStatement",
                  "src": "11039:27:55"
                },
                {
                  "assignments": [
                    11898
                  ],
                  "declarations": [
                    {
                      "constant": false,
                      "id": 11898,
                      "name": "rep",
                      "nodeType": "VariableDeclaration",
                      "scope": 11983,
                      "src": "11076:11:55",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 11897,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "11076:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "id": 11900,
                  "initialValue": {
                    "argumentTypes": null,
                    "id": 11899,
                    "name": "_rep",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 11855,
                    "src": "11090:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "VariableDeclarationStatement",
                  "src": "11076:18:55"
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11903,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "id": 11901,
                      "name": "rep",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11898,
                      "src": "11108:3:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "==",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11902,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11115:1:55",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11108:8:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11909,
                  "nodeType": "IfStatement",
                  "src": "11104:55:55",
                  "trueBody": {
                    "id": 11908,
                    "nodeType": "Block",
                    "src": "11118:41:55",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 11906,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 11904,
                            "name": "rep",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11898,
                            "src": "11132:3:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 11905,
                            "name": "reputation",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11874,
                            "src": "11138:10:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11132:16:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11907,
                        "nodeType": "ExpressionStatement",
                        "src": "11132:16:55"
                      }
                    ]
                  }
                },
                {
                  "condition": {
                    "argumentTypes": null,
                    "commonType": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "id": 11916,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftExpression": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11910,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11861,
                            "src": "11239:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 11911,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "voters",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11230,
                          "src": "11239:15:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$11210_storage_$",
                            "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                          }
                        },
                        "id": 11913,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 11912,
                          "name": "_voter",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11851,
                          "src": "11255:6:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11239:23:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Voter_$11210_storage",
                          "typeString": "struct AbsoluteVote.Voter storage ref"
                        }
                      },
                      "id": 11914,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": false,
                      "memberName": "reputation",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11209,
                      "src": "11239:34:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "BinaryOperation",
                    "operator": "!=",
                    "rightExpression": {
                      "argumentTypes": null,
                      "hexValue": "30",
                      "id": 11915,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "number",
                      "lValueRequested": false,
                      "nodeType": "Literal",
                      "src": "11277:1:55",
                      "subdenomination": null,
                      "typeDescriptions": {
                        "typeIdentifier": "t_rational_0_by_1",
                        "typeString": "int_const 0"
                      },
                      "value": "0"
                    },
                    "src": "11239:39:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "falseBody": null,
                  "id": 11923,
                  "nodeType": "IfStatement",
                  "src": "11235:109:55",
                  "trueBody": {
                    "id": 11922,
                    "nodeType": "Block",
                    "src": "11280:64:55",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 11918,
                              "name": "_proposalId",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11849,
                              "src": "11313:11:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 11919,
                              "name": "_voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11851,
                              "src": "11326:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 11917,
                            "name": "cancelVoteInternal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11719,
                            "src": "11294:18:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$_t_address_$returns$__$",
                              "typeString": "function (bytes32,address)"
                            }
                          },
                          "id": 11920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11294:39:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 11921,
                        "nodeType": "ExpressionStatement",
                        "src": "11294:39:55"
                      }
                    ]
                  }
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11936,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11924,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11861,
                          "src": "11383:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 11927,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "votes",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11226,
                        "src": "11383:14:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                          "typeString": "mapping(uint256 => uint256)"
                        }
                      },
                      "id": 11928,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11926,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11853,
                        "src": "11398:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11383:21:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 11931,
                              "name": "proposal",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11861,
                              "src": "11415:8:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                                "typeString": "struct AbsoluteVote.Proposal storage pointer"
                              }
                            },
                            "id": 11932,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "votes",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 11226,
                            "src": "11415:14:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_uint256_$_t_uint256_$",
                              "typeString": "mapping(uint256 => uint256)"
                            }
                          },
                          "id": 11934,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 11933,
                            "name": "_vote",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11853,
                            "src": "11430:5:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "11415:21:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 11929,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11898,
                          "src": "11407:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11930,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "11407:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 11935,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11407:30:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11383:54:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11937,
                  "nodeType": "ExpressionStatement",
                  "src": "11383:54:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11946,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "expression": {
                        "argumentTypes": null,
                        "id": 11938,
                        "name": "proposal",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11861,
                        "src": "11447:8:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                          "typeString": "struct AbsoluteVote.Proposal storage pointer"
                        }
                      },
                      "id": 11940,
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "memberName": "totalVotes",
                      "nodeType": "MemberAccess",
                      "referencedDeclaration": 11222,
                      "src": "11447:19:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11943,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11861,
                            "src": "11477:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 11944,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "totalVotes",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11222,
                          "src": "11477:19:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        ],
                        "expression": {
                          "argumentTypes": null,
                          "id": 11941,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11898,
                          "src": "11469:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 11942,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "add",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 15898,
                        "src": "11469:7:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                        }
                      },
                      "id": 11945,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "11469:28:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "src": "11447:50:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "id": 11947,
                  "nodeType": "ExpressionStatement",
                  "src": "11447:50:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "id": 11957,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "lValueRequested": false,
                    "leftHandSide": {
                      "argumentTypes": null,
                      "baseExpression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 11948,
                          "name": "proposal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11861,
                          "src": "11507:8:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                            "typeString": "struct AbsoluteVote.Proposal storage pointer"
                          }
                        },
                        "id": 11951,
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "voters",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": 11230,
                        "src": "11507:15:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_mapping$_t_address_$_t_struct$_Voter_$11210_storage_$",
                          "typeString": "mapping(address => struct AbsoluteVote.Voter storage ref)"
                        }
                      },
                      "id": 11952,
                      "indexExpression": {
                        "argumentTypes": null,
                        "id": 11950,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11851,
                        "src": "11523:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "isConstant": false,
                      "isLValue": true,
                      "isPure": false,
                      "lValueRequested": true,
                      "nodeType": "IndexAccess",
                      "src": "11507:23:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$11210_storage",
                        "typeString": "struct AbsoluteVote.Voter storage ref"
                      }
                    },
                    "nodeType": "Assignment",
                    "operator": "=",
                    "rightHandSide": {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "id": 11954,
                          "name": "rep",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11898,
                          "src": "11565:3:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        {
                          "argumentTypes": null,
                          "id": 11955,
                          "name": "_vote",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11853,
                          "src": "11588:5:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": null,
                        "id": 11953,
                        "name": "Voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11210,
                        "src": "11533:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_type$_t_struct$_Voter_$11210_storage_ptr_$",
                          "typeString": "type(struct AbsoluteVote.Voter storage pointer)"
                        }
                      },
                      "id": 11956,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": false,
                      "kind": "structConstructorCall",
                      "lValueRequested": false,
                      "names": [
                        "reputation",
                        "vote"
                      ],
                      "nodeType": "FunctionCall",
                      "src": "11533:71:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_Voter_$11210_memory",
                        "typeString": "struct AbsoluteVote.Voter memory"
                      }
                    },
                    "src": "11507:97:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_Voter_$11210_storage",
                      "typeString": "struct AbsoluteVote.Voter storage ref"
                    }
                  },
                  "id": 11958,
                  "nodeType": "ExpressionStatement",
                  "src": "11507:97:55"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11960,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11849,
                        "src": "11650:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 11961,
                          "name": "organizations",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 11249,
                          "src": "11663:13:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_bytes32_$_t_address_$",
                            "typeString": "mapping(bytes32 => address)"
                          }
                        },
                        "id": 11964,
                        "indexExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 11962,
                            "name": "proposal",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 11861,
                            "src": "11677:8:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Proposal_$11231_storage_ptr",
                              "typeString": "struct AbsoluteVote.Proposal storage pointer"
                            }
                          },
                          "id": 11963,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "organizationId",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 11212,
                          "src": "11677:23:55",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "11663:38:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11965,
                        "name": "_voter",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11851,
                        "src": "11703:6:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11966,
                        "name": "_vote",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11853,
                        "src": "11711:5:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "id": 11967,
                        "name": "rep",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11898,
                        "src": "11718:3:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      ],
                      "id": 11959,
                      "name": "VoteProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 15101,
                      "src": "11637:12:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                        "typeString": "function (bytes32,address,address,uint256,uint256)"
                      }
                    },
                    "id": 11968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11637:85:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11969,
                  "nodeType": "EmitStatement",
                  "src": "11632:90:55"
                },
                {
                  "eventCall": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11971,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11849,
                        "src": "11752:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 11975,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 11972,
                              "name": "_voter",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 11851,
                              "src": "11766:6:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 11973,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 16782,
                                "src": "11776:3:55",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 11974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "11776:10:55",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "11766:20:55",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "id": 11976,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "11765:22:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        },
                        {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      ],
                      "id": 11970,
                      "name": "AVVoteProposal",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11237,
                      "src": "11737:14:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_event_nonpayable$_t_bytes32_$_t_bool_$returns$__$",
                        "typeString": "function (bytes32,bool)"
                      }
                    },
                    "id": 11977,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11737:51:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_tuple$__$",
                      "typeString": "tuple()"
                    }
                  },
                  "id": 11978,
                  "nodeType": "EmitStatement",
                  "src": "11732:56:55"
                },
                {
                  "expression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 11980,
                        "name": "_proposalId",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 11849,
                        "src": "11873:11:55",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      ],
                      "id": 11979,
                      "name": "_execute",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 11847,
                      "src": "11864:8:55",
                      "typeDescriptions": {
                        "typeIdentifier": "t_function_internal_nonpayable$_t_bytes32_$returns$_t_bool_$",
                        "typeString": "function (bytes32) returns (bool)"
                      }
                    },
                    "id": 11981,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": false,
                    "kind": "functionCall",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "11864:21:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "functionReturnParameters": 11859,
                  "id": 11982,
                  "nodeType": "Return",
                  "src": "11857:28:55"
                }
              ]
            },
            "documentation": "@dev Vote for a proposal, if the voter already voted, cancel the last vote and set a new one instead\n@param _proposalId id of the proposal\n@param _voter used in case the vote is cast for someone else\n@param _vote a value between 0 to and the proposal's number of choices.\n@return true in case of proposal execution otherwise false\nthrows if proposal is not open or if it has been executed\nNB: executes the proposal if a decision has been reached",
            "id": 11984,
            "implemented": true,
            "kind": "function",
            "modifiers": [],
            "name": "internalVote",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 11856,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11849,
                  "name": "_proposalId",
                  "nodeType": "VariableDeclaration",
                  "scope": 11984,
                  "src": "10576:19:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  },
                  "typeName": {
                    "id": 11848,
                    "name": "bytes32",
                    "nodeType": "ElementaryTypeName",
                    "src": "10576:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes32",
                      "typeString": "bytes32"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11851,
                  "name": "_voter",
                  "nodeType": "VariableDeclaration",
                  "scope": 11984,
                  "src": "10597:14:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 11850,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "10597:7:55",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11853,
                  "name": "_vote",
                  "nodeType": "VariableDeclaration",
                  "scope": 11984,
                  "src": "10613:13:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11852,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10613:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 11855,
                  "name": "_rep",
                  "nodeType": "VariableDeclaration",
                  "scope": 11984,
                  "src": "10628:12:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 11854,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "10628:7:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10575:66:55"
            },
            "returnParameters": {
              "id": 11859,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 11858,
                  "name": "",
                  "nodeType": "VariableDeclaration",
                  "scope": 11984,
                  "src": "10659:4:55",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 11857,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "10659:4:55",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                }
              ],
              "src": "10658:6:55"
            },
            "scope": 11985,
            "src": "10554:1338:55",
            "stateMutability": "nonpayable",
            "superFunction": null,
            "visibility": "internal"
          }
        ],
        "scope": 11986,
        "src": "237:11657:55"
      }
    ],
    "src": "0:11895:55"
  },
  "compiler": {
    "name": "solc",
    "version": "0.5.4+commit.9549d8ff.Emscripten.clang"
  },
  "networks": {
    "3": {
      "events": {
        "0xe715e19c865cb724f3c292cc2fffc24d9cdd398e179fb366f008cc73028e1c52": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "name": "_isProxyVote",
              "type": "bool"
            }
          ],
          "name": "AVVoteProposal",
          "type": "event"
        },
        "0x75b4ff136cc5de5957574c797de3334eb1c141271922b825eb071e0487ba2c5c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "_numOfChoices",
              "type": "uint256"
            },
            {
              "indexed": false,
              "name": "_proposer",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "_paramsHash",
              "type": "bytes32"
            }
          ],
          "name": "NewProposal",
          "type": "event"
        },
        "0x37471b9c9d295ffb1309ad070b8964700bfb7b555e8e8292d0b6cbc7dba35d10": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "_decision",
              "type": "uint256"
            },
            {
              "indexed": false,
              "name": "_totalReputation",
              "type": "uint256"
            }
          ],
          "name": "ExecuteProposal",
          "type": "event"
        },
        "0x066c061a3792cb3eb64a441a928655fcbafb4a54b49725fe9cd2951df5e7189e": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "_voter",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "_vote",
              "type": "uint256"
            },
            {
              "indexed": false,
              "name": "_reputation",
              "type": "uint256"
            }
          ],
          "name": "VoteProposal",
          "type": "event"
        },
        "0x2eb3e89618ae3f1716cf6615be7ce4bbafed3578d8bc1de99897063e9db6a9f6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            }
          ],
          "name": "CancelProposal",
          "type": "event"
        },
        "0x0ecab23267930de581498fac1af19a95c888ec6583921ee9c47473e16245d3c8": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "_voter",
              "type": "address"
            }
          ],
          "name": "CancelVoting",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x11e7716de4B5bC9A1dBc93184b27aC2134CA6E42",
      "transactionHash": "0x425f48aed28def1c77a5affe484361a9bb6635123ff4ef6b85ff0641e7bdfed4"
    },
    "122": {
      "events": {
        "0xe715e19c865cb724f3c292cc2fffc24d9cdd398e179fb366f008cc73028e1c52": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "name": "_isProxyVote",
              "type": "bool"
            }
          ],
          "name": "AVVoteProposal",
          "type": "event"
        },
        "0x75b4ff136cc5de5957574c797de3334eb1c141271922b825eb071e0487ba2c5c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "_numOfChoices",
              "type": "uint256"
            },
            {
              "indexed": false,
              "name": "_proposer",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "_paramsHash",
              "type": "bytes32"
            }
          ],
          "name": "NewProposal",
          "type": "event"
        },
        "0x37471b9c9d295ffb1309ad070b8964700bfb7b555e8e8292d0b6cbc7dba35d10": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "_decision",
              "type": "uint256"
            },
            {
              "indexed": false,
              "name": "_totalReputation",
              "type": "uint256"
            }
          ],
          "name": "ExecuteProposal",
          "type": "event"
        },
        "0x066c061a3792cb3eb64a441a928655fcbafb4a54b49725fe9cd2951df5e7189e": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "_voter",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "_vote",
              "type": "uint256"
            },
            {
              "indexed": false,
              "name": "_reputation",
              "type": "uint256"
            }
          ],
          "name": "VoteProposal",
          "type": "event"
        },
        "0x2eb3e89618ae3f1716cf6615be7ce4bbafed3578d8bc1de99897063e9db6a9f6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            }
          ],
          "name": "CancelProposal",
          "type": "event"
        },
        "0x0ecab23267930de581498fac1af19a95c888ec6583921ee9c47473e16245d3c8": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "_voter",
              "type": "address"
            }
          ],
          "name": "CancelVoting",
          "type": "event"
        }
      },
      "links": {},
      "address": "0x7b58A5737440Bc05ca3972fDeFf8ac3bA984536B",
      "transactionHash": "0x2d68edd408ec7e91f614e8eaeebb594f998bcb90af7e25d9ea1362a71553892f"
    },
    "4447": {
      "events": {
        "0xe715e19c865cb724f3c292cc2fffc24d9cdd398e179fb366f008cc73028e1c52": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": false,
              "name": "_isProxyVote",
              "type": "bool"
            }
          ],
          "name": "AVVoteProposal",
          "type": "event"
        },
        "0x75b4ff136cc5de5957574c797de3334eb1c141271922b825eb071e0487ba2c5c": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "_numOfChoices",
              "type": "uint256"
            },
            {
              "indexed": false,
              "name": "_proposer",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "_paramsHash",
              "type": "bytes32"
            }
          ],
          "name": "NewProposal",
          "type": "event"
        },
        "0x37471b9c9d295ffb1309ad070b8964700bfb7b555e8e8292d0b6cbc7dba35d10": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "_decision",
              "type": "uint256"
            },
            {
              "indexed": false,
              "name": "_totalReputation",
              "type": "uint256"
            }
          ],
          "name": "ExecuteProposal",
          "type": "event"
        },
        "0x066c061a3792cb3eb64a441a928655fcbafb4a54b49725fe9cd2951df5e7189e": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "_voter",
              "type": "address"
            },
            {
              "indexed": false,
              "name": "_vote",
              "type": "uint256"
            },
            {
              "indexed": false,
              "name": "_reputation",
              "type": "uint256"
            }
          ],
          "name": "VoteProposal",
          "type": "event"
        },
        "0x2eb3e89618ae3f1716cf6615be7ce4bbafed3578d8bc1de99897063e9db6a9f6": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            }
          ],
          "name": "CancelProposal",
          "type": "event"
        },
        "0x0ecab23267930de581498fac1af19a95c888ec6583921ee9c47473e16245d3c8": {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "name": "_proposalId",
              "type": "bytes32"
            },
            {
              "indexed": true,
              "name": "_organization",
              "type": "address"
            },
            {
              "indexed": true,
              "name": "_voter",
              "type": "address"
            }
          ],
          "name": "CancelVoting",
          "type": "event"
        }
      },
      "links": {},
      "address": "0xD16082678FB71318461cF2Cb0C1Bb7eF6D041A08",
      "transactionHash": "0xdf3b1f8ee620ce1bdf77984ff41cd75f8f9cf5a6a6da5bdbda44f0ffbeaa6ca6"
    }
  },
  "schemaVersion": "3.2.3",
  "updatedAt": "2021-01-27T19:48:09.473Z",
  "networkType": "ethereum",
  "devdoc": {
    "methods": {
      "cancelVote(bytes32)": {
        "details": "Cancel the vote of the msg.sender: subtract the reputation amount from the votes and delete the voter from the proposal struct",
        "params": {
          "_proposalId": "id of the proposal"
        }
      },
      "execute(bytes32)": {
        "details": "execute check if the proposal has been decided, and if so, execute the proposal",
        "params": {
          "_proposalId": "the id of the proposal"
        },
        "return": "bool true - the proposal has been executed             false - otherwise."
      },
      "getAllowedRangeOfChoices()": {
        "details": "getAllowedRangeOfChoices returns the allowed range of choices for a voting machine.",
        "return": "min - minimum number of choices max - maximum number of choices"
      },
      "getNumberOfChoices(bytes32)": {
        "details": "getNumberOfChoices returns the number of choices possible in this proposal excluding the abstain vote (0)",
        "params": {
          "_proposalId": "the ID of the proposal"
        },
        "return": "uint256 that contains number of choices"
      },
      "getParametersHash(uint256,address)": {
        "details": "hashParameters returns a hash of the given parameters"
      },
      "isAbstainAllow()": {
        "details": "isAbstainAllow returns if the voting machine allow abstain (0)",
        "return": "bool true or false"
      },
      "isVotable(bytes32)": {
        "details": "isVotable check if the proposal is votable",
        "params": {
          "_proposalId": "the ID of the proposal"
        },
        "return": "bool true or false"
      },
      "propose(uint256,bytes32,address,address)": {
        "details": "register a new proposal with the given parameters. Every proposal has a unique ID which is being generated by calculating keccak256 of a incremented counter.",
        "params": {
          "_numOfChoices": "number of voting choices",
          "_organization": "address",
          "_paramsHash": "defined the parameters of the voting machine used for this proposal"
        },
        "return": "proposal's id."
      },
      "setParameters(uint256,address)": {
        "details": "hash the parameters, save them if necessary, and return the hash value"
      },
      "vote(bytes32,uint256,uint256,address)": {
        "details": "voting function",
        "params": {
          "_amount": "the reputation amount to vote with . if _amount == 0 it will use all voter reputation.",
          "_proposalId": "id of the proposal",
          "_vote": "a value between 0 to and the proposal number of choices.",
          "_voter": "voter address"
        },
        "return": "bool true - the proposal has been executed             false - otherwise."
      },
      "voteInfo(bytes32,address)": {
        "details": "voteInfo returns the vote and the amount of reputation of the user committed to this proposal",
        "params": {
          "_proposalId": "the ID of the proposal",
          "_voter": "the address of the voter"
        },
        "return": "uint256 vote - the voters vote       uint256 reputation - amount of reputation committed by _voter to _proposalId"
      },
      "voteStatus(bytes32,uint256)": {
        "details": "voteStatus returns the reputation voted for a proposal for a specific voting choice.",
        "params": {
          "_choice": "the index in the",
          "_proposalId": "the ID of the proposal"
        },
        "return": "voted reputation for the given choice"
      }
    }
  },
  "userdoc": {
    "methods": {}
  }
}